我有一个下三角矩阵(L)和一个上三角矩阵(U)。我使用 mldivide 来找到L*U*x = b
. 我认为 MATLAB 足够聪明,可以发现只需要向后/向前替换。但我觉得如果我能告诉 matlab(以某种方式)只应该执行前向/后向替换,它会更快。
请让我知道如何告诉 MATLAB 只进行向后/向前替换而不需要额外的操作。
谢谢
我有一个下三角矩阵(L)和一个上三角矩阵(U)。我使用 mldivide 来找到L*U*x = b
. 我认为 MATLAB 足够聪明,可以发现只需要向后/向前替换。但我觉得如果我能告诉 matlab(以某种方式)只应该执行前向/后向替换,它会更快。
请让我知道如何告诉 MATLAB 只进行向后/向前替换而不需要额外的操作。
谢谢
文档很清楚:
三角矩阵的排列
mldivide 通过测试零元素来检查三角形。如果矩阵 A 是三角形的,MATLAB 软件使用代换来计算解向量 x。如果 A 是三角矩阵的置换,MATLAB 软件使用置换替换算法。
所以
x = U \ (L \ b);
是您问题的后向/前向解决方案。
搜索文档似乎 Matlab 确实使用了向后/向前替换。但是,由于mldivide
获取矩阵而L*U
不是单独获取,它必须在内部执行分解。L
U
如果您已经有 L 和 U 矩阵,您可以保存计算的那部分。