2016-09-24 12 views
1

私はLU分解を使用して線形方程式のシステムを解決しようとしています。私はmatlabのlinsolveの出力と比較しているmatlabでコードを作った。 Luの分解は、AをL(下三角)とU(上三角)に分解することによって機能します。このサイトから学んだことから理解してください:http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/INT-APP/CURVE-linear-system.htmlそして、2つの方程式を解くxを計算する。 B = L Y; Y = U X;LU分解matlabのlinsolveを使用して

私の混乱はここにあります。

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); 

は、事前にありがとうございます!

+0

http://stackoverflow.com/documentation/matlab/6163/matrix-decompositions#t=201609240746034184022 – StefanM

答えて

2

triuおよびtrilは、LU分解でLとUを与えません。 LOWUPP両方はLU分解でA

の対角部を有するため

彼らは単にエントリをマトリックスの上部/下部を与える、すなわち、

A == LOW + UPP - diag(A) 

diag(A)が減算され、L及びUは、満たすべき

A == L*U 

Lと0を取得したい場合、使用

[L,U] = lu(A); 
関連する問題