使用 matlab 的 linsolve 进行 LU 分解
LU decomposition using matlab's linsolve
所以我正在尝试使用 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);
提前致谢!
triu
和tril
不给你LU分解中的L和U。
他们只给出矩阵的 lower/upper 部分,即
A == LOW + UPP - diag(A)
diag(A)
被减去是因为LOW
和UPP
都有A
的对角线部分
LU分解时,L和U要满足
A == L*U
如果你想得到这样的L
和U
,使用
[L,U] = lu(A);
所以我正在尝试使用 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);
提前致谢!
triu
和tril
不给你LU分解中的L和U。
他们只给出矩阵的 lower/upper 部分,即
A == LOW + UPP - diag(A)
diag(A)
被减去是因为LOW
和UPP
都有A
LU分解时,L和U要满足
A == L*U
如果你想得到这样的L
和U
,使用
[L,U] = lu(A);