6

のベクトルにより、線形方程式系を解き、機能に建てxを発見しているがありますか?与えられたLU分解と<code>LU*x=b</code>よう<code>b</code>定数の<code>L</code>と<code>U</code><a href="http://en.wikipedia.org/wiki/LU_decomposition">LU decomposition</a>とベクトルを考えると定数

X = functionName(L,U,b) 

LUの両方で、我々はGaussian eliminationプロセスを使用せずにforward and backward substitutionで直接解決することができる三角行列を扱っていることに注意してください - のようなものを意味します。

編集:この線形方程式系を解く

は、以下の手順に従ってしなければならない -

1. define y - s.t Ux=y 
2. solve Ly=b by forward substitution 
3. solve Ux=y by backward substitution 
4. return y 

編集2:

私はlinalg::matlinsolveLUを見つけましたが、私は試していませんそれは私が古いバージョン(R2010a)を持っている原因になります。それは誰のために働いていますか?

+0

あなたのベクトルと行列は象徴的ですか?もしそうなら、あなたはあなたの質問にこれを詳述する必要があります。 – horchler

+0

また、 'mldivide'は[シンボリックシステムのためにオーバーロードされています](http://www.mathworks.com/help/symbolic/arithmeticoperations.html)ですが、正確には動作しません。 – horchler

+0

"記号的な行列"とは何ですか? – URL87

答えて

5

お持ちの場合:

x = A\b 

それともすでに、その後、AのLU分解を持っている場合:

A = rand(3); 
b = rand(3,1); 

を、システムへの解決策は、単にように計算することができます。

[L,U] = lu(A); 
xx = U\(L\b) 

mldivide機能がsmart enoughであることを検出してそれに応じてアルゴリズムを選択します(前方/後方置換)

+0

このようなことは、係数行列Aが固定で、多くの異なる右辺bがある場合に便利です。だから、分解を事前に計算することで、速度を上げるかもしれません。 – Amro

+0

"それを検出するのに十分なスマートな..."ということをどう知っていますか? – URL87

+0

'mldivide'がどのように異なったアルゴリズムを実装し、入力マトリックスの特性に基づいて適切なアルゴリズムを選択するのかを説明するドキュメントへのリンクを与えました。 – Amro

3

私は、これはあなたが探しているものだと思う:

A = rand(3,3); % Random 3-by-3 matrix 
b = rand(3,1); % Random 3-by-1 vector 
[L,U] = lu(A); % LU decomposition 
x = U\(L\b) % Solve system of equations via mldivide (same as x = A\b or x = (L*U)\b) 
err = L*U*x-b % Numerical error 

方程式のシステムはmldivideを使用して解決されます。また、qrを見て、LU分解を使用する代わりにQR decompositionを実装することもできます。 qrは直接A*x = bタイプの問題を解決することができ、より効率的です。またlinsolveを見てください。シンボリックシステムでは、mldivideを使用したり、MuPADでlinalg::matlinsolveLUを試すことができます。

+0

私の編集したポストを見てください – URL87

+0

@Amroのリンクありがとうございます。 – horchler

関連する問題