到目前为止,我始终使用 \
(= mldivide
) 求解(常规)三角系统。但这个函数总是第一个checks whether the matrix is triangular在使用适当的求解器之前。对三角形的简单检查已经与求解本身具有大约相同的阶数成本。 (但因此仅将运行时间增加一个常数因子,因此通常应该没有那么重要)我想知道:
如果您已经知道矩阵是三角形的,是否可以使用内置求解器来避免此检查?
最佳答案
您可以使用linsolve
,它具有各种矩阵类型的选项,包括三角矩阵。
https://www.mathworks.com/help/matlab/ref/linsolve.html
我尝试使用 Mathworks 的示例,两者都太快了,不重要。当放大到 5000x3000 时,linsolve 的速度要快得多。而且也是无用的,因为生成的矩阵是有秩缺陷的,并且该方法产生了完全错误的结果,充满了 NaN。普通除法按预期进行 - 有一些错误,但大多数结果都是 1。
关于matlab - 求解三角系统的特殊函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44119230/