julia - 使用 Julia 通过 n 维中的 n 个点求解非奇异方程组、超空间

标签 julia linear-algebra

我有一个关于 Julia 的简单问题:我想找到穿过 n 维 n 点的超平面的方程。有什么简单的方法可以做到这一点吗?我正在求解线性方程组,但它可能是非奇异的,在这种情况下,Julia 返回错误。是否有任何已知的方法可以在 Julia 中求解参数或非奇异方程组?

作为示例,考虑 3d 点 [1 0 0]、[0 0 1] 和 [1 0 1]。 我希望通过系数向量 [0 1 0 0] 将 y = 0 作为解。

在圣人

a,b,c,d = var('a b c d')
f1 = a + d
f2 = a + c + d
f3 = c + d
solve([f1==0,f2==0,f3==0],a,b,c,d)

给出

[[a == 0, b == r1, c == 0, d == 0]]

非常感谢您的帮助。

最佳答案

我不确定我完全理解这个问题,但是如果我们使用系数矩阵和向量来表达上述问题,Julia 允许

julia> [1 0 0 1; 1 0 1 1; 0 0 1 1] \ [0; 0; 0]
4-element Array{Float64,1}:
 -0.0
  0.0
 -0.0
 -0.0

获得一个特定的解决方案并且

julia> nullspace([1 0 0 1; 1 0 1 1; 0 0 1 1])
4×1 Array{Float64,2}:
  3.92523e-17
  1.0        
  0.0        
 -3.92523e-17

获取解空间的基础。 (这里的数字问题有点不幸,当然,理想情况下应该是 [0; 1; 0; 0]。)如果我们将其读作 [a;乙; C; d] = [0; 0; 0; 0] + r*[0; 1; 0; 0],基本上就是问题中给出的解决方案。

如果矩阵是秩亏的,例如因为这些点是共线的,所以您仍然可以从 \ 获得特定的解,但是 nullspace 将返回一个包含多个向量的基数。

关于julia - 使用 Julia 通过 n 维中的 n 个点求解非奇异方程组、超空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39915635/

相关文章:

http - Julia:如何让 HTTP.jl 从 WSL2 VM 的 ip 服务?

debugging - 如何避免自定义 Julia 迭代器中的内存分配?

c - 我应该与 mkl_malloc 对齐什么值?

python-3.x - 如何进行线性拟合,其中我的变量 X 是 3d 向量?

python - 阈值方案分散算法

ios - SceneKit Swift 中的计算反射/重新反弹向量

julia - Varargs 在 Julia 中给出了关键错误

julia - 使用 show() 打印输出

python - 使用 Python 进行并行精确矩阵对角化

multidimensional-array - 如何在 Julia 的特定轴上对高阶多维数组(或张量)进行切片?