2016-04-04 11 views
0

私たちは膜がエンドポイントで保持されることを前提とし、この方程式系を1 ≤ n ≤ 30matlabにさまざまな行列を書くには?

−(2 + α)x1 + x2 = b1, 
xj−1 − (2 + α)xj + xj+1 = bj , for 2 ≤ j ≤ 29, 
x29 − (2 + α)x30 = b30. 

α= 1 のセットを有する(すなわちX0 = 0、X31 = 0)。メンブレンには重量がないので、j = 1の場合、すべてbj = 0となります。 。 。 30を除いて、負荷が適用されるj = 6を除きます。b6 = 2

システムのLU分解を計算します。 matlabでシステムの左側を実装する方法がわかりません。 右側には、私はこのようにそれを作った:

b=[0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]'; 

左側を行うにはどのように?

おかげ

+0

上記bの入力ミスはありますか? 6番目の要素は6でなく2でなければなりませんか? – mgilbert

答えて

0

あなたがAのLU分解のみに関心がある場合は、全体の線形システムが含まれている理由は不明ですか?それにもかかわらず、上記のようにA行列を生成し、線形システムを解き、LU分解を示すコードがいくつかあります。

% equation A*X = b 

b = zeros(30,1); 
b(6) = 2; 
alpha = 1; 

A = zeros(30, 30); 

A(1, 1) = -(2 + alpha); 
A(1, 2) = 1; 

for i = 2:29 
    A(i, i-1) = 1; 
    A(i, i) = -(2 + alpha); 
    A(i, i+1) = 1; 
end 

A(30, 29) = 1; 
A(30, 30) = -(2 + alpha); 

その後、lu(A)を使用してLU分解を取得したり、linsolve(A,b)を使用して線形連立方程式を解くことができます。

+0

ループの代わりに 'A = - (2 + alpha)* eye(30)+ diag(ones(29,1)、1)+ diag(ones(29,1)、 - 1)'で十分です。 – percusse

+0

神はあなたを祝福します...すべての兄弟を助けてくれてありがとう..私ははるかに良く理解:) –

関連する問題