Jacobiverfahren Code Octave < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Hallo liebe Profis,
ich hab ein Problem : soll im Grunde Jacobiverfahren in Octave durchführen soll aber sehr ähnlich sein mit Mathlab... Ich hab auch einen COde aber dieser hat nur die ersten 3 mal funktioniert .... dann hab ich noch was geändert und bekomme den Fehler nicht raus. Abgabe ist am Dienstag !
mein Code:
Code:
function [xx] = jacobi(A,b,it)
printf("Gesamtschrittverfahren von [mm] Jacobi\n\n");
[/mm]
[m,n] = size(A);
[o,p] = size(b);
if (m!=n)
error("A ist nicht quadratisch!");
end
if (p != 1)
b = b'
[o,p]=size(b);
end
if (o!= m)
error("Die Anzahl der Spalten von A und b stimmt nicht uberein!")
end
if (it < 1)
error("Anzal der Iterationen muss > 0 sein!");
end
A
U=tril(A,-1);
D=diag(diag(A));
D1=diag(1./diag(A));
O=triu(A,1);
x=zeros(n,1);
xneu=zeros(n,1);
[mm] printf("\n");
[/mm]
printf("x(start) = [mm] [0,0,...]\n");
[/mm]
printf("x(neu) = -D^(-1) * U * x - D^(-1) * O * x + D^(-1) * [mm] b\n");
[/mm]
for i = 1:it
xneu = -D1*(U+O)*x + D1*b
x=xneu;
end
xx = x;
Es sollte funktioniern nach dem Eintippen von :
A = [19,3,2;5,18,3;1,2,20]
b = [1,2,3]
jacobi(A,b,5)
und sollte rauskommen :
octave:30> A = [19,3,2;5,18,3;1,2,20]
A =
19 3 2
5 18 3
1 2 20
octave:31> b = [1,2,3]
b =
1 2 3
octave:32> jacobi(A,b,5)
Gesamtschrittverfahren von Jacobi
b =
1
2
3
A =
19 3 2
5 18 3
1 2 20
x(start) = [0,0,...]
x(neu) = -D^(-1) * U * x - D^(-1) * O * x + D^(-1) * b
xneu =
0.052632
0.111111
0.150000
xneu =
0.019298
0.071491
0.136257
xneu =
0.027001
0.083041
0.141886
xneu =
0.024584
0.079963
0.140346
xneu =
0.025233
0.080891
0.140774
ans =
0.025233
0.080891
0.140774
funktioniert nicht richtig irgendwie sollte auch mehrere ergebnisse anzeigen aber geht auch nur manchmal ... ich verzweifel ... :(
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:49 Di 08.12.2015 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|