Simple relaxation method Matlab

62 ビュー (過去 30 日間)
Rolland-Luigi Eva
Rolland-Luigi Eva 2023 年 2 月 9 日
コメント済み: Rolland-Luigi Eva 2023 年 2 月 9 日
Hi.
I want to solve an ecuation system using the simple relaxation method.
I wrote the code using an exemple but the result is wrong. ( Or null? )
A=[ 67 -8 -3 78; -8 65 12 12 ; -3 12 64 -17; 78 12 -17 61];
b=[4; 6 ; 8 ;10];
n=length (b);
x=zeros (n,1) ;
r=A*x-b;
while norm (r, inf) > (10^ (-10) )
p=zeros (n,1);
[c, j]=max(abs (r) );
p ( j) =1;
t= ( -r (j) ) / A (j,j) ;
x=x+t*p;
r=A*x-b;
end
x
i
This is what I have managed to write and the result is NaN, NaN, NaN, Inf.
Is there anything I'm doing wrong? I apologise if this seems like a silly question. I'm just new into it and trying to discover how to solve it.
Thank you! I have tried both r2009a and the online version.
  2 件のコメント
Torsten
Torsten 2023 年 2 月 9 日
Never seen this iteration scheme. Does it have a name ? Can you give a link where it is described ?
Rolland-Luigi Eva
Rolland-Luigi Eva 2023 年 2 月 9 日
Unfortunately it is not described, probably that's why I could't solve it, I didn't understand the solving steps properly.
It is from an university course.

サインインしてコメントする。

採用された回答

Alan Stevens
Alan Stevens 2023 年 2 月 9 日
編集済み: Alan Stevens 2023 年 2 月 9 日
For the simple relaxation technique to work the A matrix needs to be diagonally dominant. Your A is not diagonally dominant - see first and last rows.
For example, if we make A diagonally dominant (I've just arbitrarily modified your A so that it is), your program generates the following:
A=[ 78 -8 -3 67; -8 65 12 12 ; -3 12 64 -17; 61 12 -17 78];
b=[4; 6 ; 8 ;10];
n=length (b);
x=zeros (n,1) ;
r=A*x-b;
while norm (r, inf) > (10^ (-10) )
p=zeros (n,1);
[c, j]=max(abs (r) );
p ( j) =1;
t= ( -r (j) ) / A (j,j) ;
x=x+t*p;
r=A*x-b;
end
disp(x)
-0.3524 -0.0841 0.2494 0.4711
Compare this with
disp(A\b)
-0.3524 -0.0841 0.2494 0.4711
  3 件のコメント
John D'Errico
John D'Errico 2023 年 2 月 9 日
@Rolland-Luigi Eva - What you said is not technically correct. The system of equations DOES have a solution.
A=[ 78 -8 -3 67; -8 65 12 12 ; -3 12 64 -17; 61 12 -17 78];
b=[4; 6 ; 8 ;10];
x = A\b
x = 4×1
-0.3524 -0.0841 0.2494 0.4711
That is the solution of that system of equations. It is just not achievable using a simple relaxation scheme, as that appears to be divergent for this problem.
norm(A*x-b)
ans = 3.9721e-15
So zero to within floating point trash for the problem.
The problem is that some linear systems of equations will not converge under a relaxation scheme.
Rolland-Luigi Eva
Rolland-Luigi Eva 2023 年 2 月 9 日
Yes, it couldn't been solved using the method I wanted to.
I apologise.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMathematics and Optimization についてさらに検索

製品


リリース

R2009a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by