Simple relaxation method Matlab
54 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Rolland-Luigi Eva
am 9 Feb. 2023
Kommentiert: Rolland-Luigi Eva
am 9 Feb. 2023
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 Kommentare
Torsten
am 9 Feb. 2023
Never seen this iteration scheme. Does it have a name ? Can you give a link where it is described ?
Akzeptierte Antwort
Alan Stevens
am 9 Feb. 2023
Bearbeitet: Alan Stevens
am 9 Feb. 2023
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)
Compare this with
disp(A\b)
3 Kommentare
John D'Errico
am 9 Feb. 2023
@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
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)
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.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Mathematics and Optimization finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!