Jacobi Verfahren Matlab < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) überfällig | Datum: | 21:50 Mi 02.09.2009 | Autor: | roma5 |
Aufgabe | Programmiere ein programm zum Jacobi Verfahren |
Hallo,
ich habe hier ein programm zum Jacobi verfahren geschrieben, habe allerdings ein Problem:Für manche beispiele konvergiert es und zeigt die richtige lösung an, und für manche (zweite zeile im programm)konvergiert es nicht und gibts eben keine lösung.
Also Konvergenzkriterien habe ich das starke Spalten und Zeilensummenkriterium genommen(für meine Zwecke reicht dieses aus). Und dieses beispiel erfüllt das Spaltensummenkriterium eine richtige lösung kommt dabei aber nicht heraus.
Ich weiß leider wirklich nicht woran es liegt, hoffe mir kann einer helfen.
Bitte um eure Unterstützung
function[x] = jacobi(A)
%jacobi([3 -1 2 1 0; 1 2 -1 -2 2; -2 -3 2 2 1; 2 4 -1 -3 5])
s = size(A);
n = s(1,1);
m = s(1,2);
max=50;
x0=ones(n,1);
x = ones(n, 1);
A1 = A(:,1:m-1)
B=A1';
diagonal=diag(A1);
%Zeilen und Spaltensummen ohne Diagonalelemente
for a=1:n
a;
B;
z(a,1)=sum(B(1:a-1,a))+sum(B(a+1:n,a))
sp(a,1)=sum(A1(1:a-1,a))+sum(A1(a+1:n,a))
end
if(abs(z(:,1))<abs(diagonal(:,1))| abs(sp(:,1))<abs(diagonal(:,1)))
for k = 1:max
for i = 1:n
x(i,1) = (A(i,m) - A(i,1:i-1)*x0(1:i-1,1)-A(i,i+1:n)*x0(i+1:n,1))/A(i,i);
end
for i = 1:n
x0(i,1) = x(i,1);
end
end
x0
else
error('konvergiert nicht');
end
Ich habe diese Frage auch in folgenden Foren auf anderen Internetseiten gestellt:http://matheplanet.com/
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 22:20 Mo 07.09.2009 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|