【问题标题】:LU decomposition using matlab's linsolve使用 matlab 的 linsolve 进行 LU 分解
【发布时间】:2016-09-24 10:12:26
【问题描述】:

所以我正在尝试使用 LU 分解来求解线性方程组。我在 matlab 中编写了一个代码,我正在与 matlab 的 linsolve 的输出进行比较。让我困惑的是: 据我了解(从我从该站点了解到的信息:http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/INT-APP/CURVE-linear-system.html)Lu 分解通过将 A 分解为 L(下三角形)和 U(上三角形)来工作。然后它计算 x 求解两个方程: B = LY; Y = UX;

所以我的困惑来了。

如果我执行 x_solutions=linsolve(A,B),我会得到与执行 x=linsolve(U,y) 不同的结果(当然是先执行 y = linsolve(L,B))。

有人知道为什么会这样吗?在这种情况下 x 不应该等于 x_solutions 还是我错过了什么?

只是为了泄露所有信息,我就是这样做的:

A=[1 2 6; 1 2 2; 2 2 1];
B=[1 0 1]';

G=linsolve(A,B);

UPP = triu(A);
LOW= tril(A);

y=linsolve(LOW,B);
x=linsolve(UPP,y);

提前谢谢你!

【问题讨论】:

标签: matlab decomposition


【解决方案1】:

triutril 不会给你 LU 分解中的 L 和 U。

他们只是给出矩阵的下部/上部的条目,即,

A == LOW + UPP - diag(A)

diag(A) 被减去,因为LOWUPP 都具有A 的对角线部分

在LU分解中,L和U应该满足

A == L*U

如果你想得到这样的LU,使用

[L,U] = lu(A);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多