Answers:
它们都是直接求解线性系统的求解器(与迭代求解器相反)。
mldivide
确实在解决执行了的测试。有关更多信息,请参见此线程中的艾伦答案。另请参见此处的MATLAB 算法帮助。A x = bmldivide
mldivide
对于平方矩阵:如果A是对称的并且具有实的正对角线元素,则MATLAB会尝试进行Cholesky分解。如果Cholesky因式分解失败,则MATLAB将执行对称,不确定的因式分解。如果A为上Hessenberg,则MATLAB使用高斯消去法将系统简化为三角矩阵。如果A是正方形,但既不是置换的三角形,不是对称和正定的,也不是Hessenberg,则MATLAB使用LU分解和部分枢轴旋转来执行常规的三角分解
linsolve
对于平方矩阵:部分旋转的LU分解
mldivide
和linsolve
矩形矩阵:QR分解
在linsolve
作为帮助文档在MathWorks公司的网站显示,你可以避免额外的测试过程(艾伦用在他的答案的单词“开销”)通过opts
当且仅当你知道是什么是喜欢提前。对于大问题,您可以节省一些时间。例如:
opts.POSDEF = true; linsolve(A,b,opts)
如果您事先知道是正定的,则将返回。但是,选择不正确会导致错误的结果。一opts
如果某些条件得到满足,linsolve
并且mldivide
也使用相同的分解过程。例如,对于满足某些属性的稠密正定系统,或者您有一个超定系统,并且两者都执行最小二乘拟合。
而且,linsolve
还可以执行符号计算。当您有一个不确定的小型系统,且具有无限数量的解决方案时,这非常方便。linsolve
使您可以象征性地解决它,mldivide
无法做到。但是,如果未以符号形式声明变量,mldivide
并且linsolve
会给您同样的警告消息“矩阵对于工作精度是奇异的”。
最后但并非最不重要的一点是,linsolve
它不支持稀疏系统,例如以下矩阵(蓝点表示非零输入)。当mldivide
大小小于200k x 200k时,可以稳健地处理稀疏系统。