【发布时间】:2013-01-31 02:39:31
【问题描述】:
我有一个下三角矩阵 (L) 和一个上三角矩阵 (U)。我使用 mldivide 来找到L*U*x = b 的解决方案。我认为 MATLAB 足够聪明,可以发现只需要向后/向前替换。但我觉得如果我能告诉 matlab(以某种方式)只应该执行前向/后向替换,它会更快。
请告诉我如何告诉 MATLAB 只进行向后/向前替换而不需要额外的操作。
谢谢
【问题讨论】:
标签: matlab
我有一个下三角矩阵 (L) 和一个上三角矩阵 (U)。我使用 mldivide 来找到L*U*x = b 的解决方案。我认为 MATLAB 足够聪明,可以发现只需要向后/向前替换。但我觉得如果我能告诉 matlab(以某种方式)只应该执行前向/后向替换,它会更快。
请告诉我如何告诉 MATLAB 只进行向后/向前替换而不需要额外的操作。
谢谢
【问题讨论】:
标签: matlab
docs 很清楚:
三角矩阵的排列
mldivide 检查三角形 通过测试零元素。如果矩阵 A 是三角形的,MATLAB 软件使用替换来计算解向量 x。如果 A 是 一个三角矩阵的置换,MATLAB 软件使用一个置换 替换算法。
所以
x = U \ (L \ b);
是您问题的后向/前向解决方案。
【讨论】:
搜索documentation 似乎Matlab 确实使用了向后/向前替换。但是,由于mldivide 得到矩阵L*U 而不是L 和U 分别,它必须在内部执行分解。
如果您已经拥有 L 和 U 矩阵,则可以保存这部分计算。
【讨论】: