Iterationen Plotten < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Aufgabe | Hallo,
ich soll zu dieser Implementation des Newton-Verfahrens für NLG die Iterationen mit Ergebnissen (siehe unten) in einem Plot ausgeben.
Vielleicht kann mir jemand sagen wie ich das am besten anstelle, komme auf keine vernünftige Lösung....
hier die Aufgabe mit Lösung:
|
>> f1=@(x,y) [mm] x^2+y^2+y-1; [/mm]
f2=@(x,y) [mm] x^2-y^2+x-y-2;
[/mm]
f1x=@(x) 2*x;
f1y=@(y) 2*y+1;
f2x=@(x) 2*x+1;
f2y=@(y) -2*y-1;
x=[0;0];
i=0;
epsilon=1e-6;
while norm([f1(x(1),x(2));f2(x(1),x(2))]) > epsilon
[mm] xold=[f1x(x(1)),f1y(x(2));f2x(x(1)),f2y(x(2))]\-[f1(x(1),x(2));f2(x(1),x(2))]; [/mm]
x(1)=x(1)+xold(1);
x(2)=x(2)+xold(2);
disp(['Iteration: ' num2str(i)]);
disp(['Lösung : ' [mm] num2str(x','1.7f\t')]); [/mm]
i=i+1;
end
% Das gibt MATLAB aus:
Iteration: 0
Lösung : 3.0000000 1.0000000
Iteration: 1
Lösung : 1.6153846 0.4358974
Iteration: 2
Lösung : 1.1015067 0.1286252
Iteration: 3
Lösung : 1.0038119 0.0146752
Iteration: 4
Lösung : 1.0000058 0.0002120
Iteration: 5
Lösung : 1.0000000 0.0000000
Vielen Dank im voraus
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 13:01 Mi 23.06.2010 | Autor: | Frasier |
Hallo leberkas2,
du kannst i und die x- und y-Werte zwischenspeichern und dann plotten.
1: | f1=@(x,y) x^2+y^2+y-1;
| 2: | f2=@(x,y) x^2-y^2+x-y-2;
| 3: |
| 4: | f1x=@(x) 2*x;
| 5: | f1y=@(y) 2*y+1;
| 6: | f2x=@(x) 2*x+1;
| 7: | f2y=@(y) -2*y-1;
| 8: |
| 9: | x=[0;0];
| 10: | i=0;
| 11: | epsilon=1e-6;
| 12: | while norm([f1(x(1),x(2));f2(x(1),x(2))]) > epsilon
| 13: | xold=[f1x(x(1)),f1y(x(2));f2x(x(1)),f2y(x(2))]\-[f1(x(1),x(2));f2(x(1),x(2))];
| 14: | x(1)=x(1)+xold(1);
| 15: | x(2)=x(2)+xold(2);
| 16: | disp(['Iteration: ' num2str(i)]);
| 17: | disp(['Lösung : ' num2str(x','%1.7f\t')]);
| 18: | p(i+1)=i;
| 19: | px(i+1)=x(1);
| 20: | py(i+1)=x(2);
| 21: | i=i+1;
| 22: | end
| 23: | plot(p,px,'--rx','LineWidth' ,2, ...
| 24: | 'MarkerSize',10);
| 25: | hold on;
| 26: | plot(p,py,'--bo','LineWidth',2);
| 27: | hold off;
| 28: | legend('x','y');
| 29: | xlabel('Iteration');
| 30: | ylabel('x,y');
| 31: | set(gca,'xtick',min(p):max(p));
| 32: | grid; |
lg
F.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:27 Do 24.06.2010 | Autor: | leberkas2 |
Hallo frasier,
vielen Dank! Hat mir sehr weitergeholfen!
|
|
|
|