LU分解使用matlab的linsolve

时间:2016-09-24 01:08:51

标签: matlab decomposition

所以我试图用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 = L Y; Y = U X;

所以我的讨论来到这里。

如果我做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);

提前谢谢!

1 个答案:

答案 0 :(得分:2)

triutril不会在LU分解中为您提供L和U.

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

A == LOW + UPP - diag(A)
减去

diag(A)因为LOWUPP都有A

的对角线部分

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

A == L*U

如果您想获得此类LU,请使用

[L,U] = lu(A);