Julia矩阵向量除法算子的定义

abe*_*ysh 4 matrix julia

我偶然发现了一些我觉得很奇怪的事情.

作为示例考虑代码

A = reshape(1:6, 3,2)
A/[1 1]
Run Code Online (Sandbox Code Playgroud)

这使

3×1 Array{Float64,2}:
 2.5
 3.5
 4.5
Run Code Online (Sandbox Code Playgroud)

据我所知,通常这种划分给出了列的加权平均值,其中每个权重与向量的对应元素成反比.

所以我的问题是,为什么这样定义?

这个定义的数学证明是什么?

Ste*_*ski 7

这是最小的误差解决方案|A - v*[1 1]|?- 过度约束,一般没有确切的解决方案(即值v,使得范数精确为零).通过各种技术和启发式解决欠载和过度约束系统的行为/\严重超载.这种重载是否是一个好主意是值得商榷的,但这是人们对Matlab和Octave中的这些操作所期望的,并且在单个运算符中提供如此多的功能通常非常方便.

  • 看到'pinv([1 1])≈[.5,.5]`和'A*pinv([1 1])≈[2.5,3.5,4.5]`也许会有所帮助. (2认同)

Chr*_*kas 6

A是一个NxN矩阵和b是一个Nx1列向量.然后\解决Ax=b/解决xA=b.

正如斯特凡提到的那样,这可以扩展到欠定情况作为最小二乘解.这是通过QR或SVD分解完成的.请参阅这些算法的详细信息,了解为何会出现这种情况.提示:OLS估计器的线性形式实际上可以写成矩阵分解的解决方案,所以它是一样的.

现在你可能会问,它是如何解决它的?这是一个复杂的问题.基本上,它使用矩阵分解.但是使用哪种矩阵分解依赖于矩阵类型.其原因是因为高斯消除是O(n ^ 3),因此通常不好处理问题.但无论什么时候你可以专攻,你都可以获得加速.所以基本上\(以及/,转换和调用\)检查一堆特殊类型,并根据矩阵类型选择分解或其他算法(LU,QR,SVD,Cholesky等).MATLAB的流程图很好地解释了这一点.这里有很多细节,当矩阵稀疏时它会获得更多细节.还应该提到IterativeSolvers.jl,因为它是另一组解决方案Ax=b.

大多数应用的数学问题都归结为线性代数,求解Ax=b是最重要和最困难的问题之一,这就是为什么有大量关于这一主题的研究.事实上,你可以说绝大多数数值线性代数领域都致力于寻找解决Ax=b特定矩阵类型的快速方法.\实质上将所有直接(非迭代)方法放入一个方便的运算符中.