|
alexbmw320 |

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 18.01.10
|
 |
|
 |
Wohnort: kirn
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.01.2010, 19:23
Titel: impl. eulerverfahren
|
 |
also ich muss ein programm zum lösen von differentialgleichungen 1. ordnung mit hilfe des impl. eulerverfahren schreiben, hier einfach mal mein programm:
function [yerg]=impl(f,int,n,L,max,eps)
h=(int(2)-int(1))/n;
yk0(1)=int(1);
if nargin<3; eps=5E-6;max=25;L=0.9;n=100; end;
if nargin<4; eps=5E-6;max=25;L=0.9; end;
if nargin<5; eps=5E-6;max=25; end;
if nargin<6; eps=5E-6; end;
for i=0:n
x(i+1)=int(1)+i*(int(2)-int(1))/n;
%explizites Eulerverfahren zur Bestimmung des Startwertes
yk0(i+2)=yk0(i+1)+h*f(x(i+1),yk0(i+1));
end
for i=0:n;
for z=1:max;
%implizites Eulerverfahren gelöst mit sukzessiver Approximation
yk0(i+2,z)=Sukz(f,x(i+1),max,eps,L);
end
end
%Ergebnisvektor
yerg=yk0;%(:,end);
end
hoffe es kann mir jemand helfen. also wenn ich ein beispiel eingebe dann gibt er mir nur die erste spalte von der matrix.
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 18.01.2010, 20:24
Titel:
|
 |
Hallo,
schau dir doch mal mit dem Debugger an, was passiert. Falls das nicht hilft:
- Wie sieht der Testaufruf auf?
- Wie sieht Sukz.m aus?
Die Abfrage mit den nargin kann übrigens vereinfacht werden:
Wenn beispielsweise nargin = 2 sind ja alle Bedingungen erfüllt, es wird also alles ausgeführt.
Grüße,
Harald
|
|
|
alexbmw320 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 18.01.10
|
 |
|
 |
Wohnort: kirn
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.01.2010, 21:49
Titel:
|
 |
hat keiner eine lösung???????
|
|
|
alexbmw320 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 18.01.10
|
 |
|
 |
Wohnort: kirn
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.01.2010, 14:17
Titel:
|
 |
also den starwert bekommen wir nur beim impl. eulerverfahren kommt NaN
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 19.01.2010, 14:56
Titel:
|
 |
Hallo,
Zitat: |
hat keiner eine lösung??????? |
Gegenfrage: hast du meinen Post gelesen?
Zitat: |
also den starwert bekommen wir nur beim impl. eulerverfahren kommt NaN |
Bahnhof. Welcher Startwert denn?
Grüße,
Harald
|
|
|
alexbmw320 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 18.01.10
|
 |
|
 |
Wohnort: kirn
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.01.2010, 20:05
Titel:
|
 |
damit bekomme ich den starwert:
for i=0:n
x(i+1)=int(1)+i*(int(2)-int(1))/n;
%explizites Eulerverfahren zur Bestimmung des Startwertes
yk0(i+2)=yk0(i+1)+h*f(x(i+1),yk0(i+1));
end
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 19.01.2010, 20:17
Titel:
|
 |
Hallo,
letzter Versuch:
Ich erkenne keine prinzipiellen Fehler im vorliegenden Code -> es muss an Sukz.m oder dem Aufruf liegen. Wie auch schon vorher mal geschrieben:
Zitat: |
- Wie sieht der Testaufruf auf?
- Wie sieht Sukz.m aus? |
Ohne diese Informationen kann zumindest ich dir nicht helfen.
Grüße,
Harald
|
|
|
alexbmw320 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 18.01.10
|
 |
|
 |
Wohnort: kirn
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.01.2010, 21:25
Titel:
|
 |
ja da hast du recht es liegt an Sukz.m.
Sukz.m bedeutet,dass er sich mit kleinen schritten an die funktion nähert, nur was ich da jetzt falsch programmiert hab, weiss ich nicht, deshalb frage ich ja nach. das programm gibt mir für sukz.m NaN aus
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 19.01.2010, 21:49
Titel:
|
 |
Hallo,
Entschuldige, aber entweder habe ich Tomaten auf den Augen oder du hast Sukz.m nicht hier gepostet.
In letzterem Fall: Wie soll dir jemand sagen, wo der Fehler in deinem Code steckt, wenn du ihn nicht zur Verfügung stellst?
Grüße,
Harald
|
|
|
alexbmw320 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 18.01.10
|
 |
|
 |
Wohnort: kirn
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.01.2010, 01:10
Titel:
|
 |
hier stehts doch:
for i=0:n;
for z=1:max;
%implizites Eulerverfahren gelöst mit sukzessiver Approximation
yk0(i+2,z)=Sukz(f,x(i+1),max,eps,L);
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 20.01.2010, 10:20
Titel:
|
 |
Hallo,
das einzige, was dort steht, ist, dass du eine Funktion sukz.m aufrufst.
Die entscheidende Frage ist aber, was in dieser Funktion passiert.
Es muss eine Unterfunktion Sukz oder eine Sukz.m geben, und die müsstest du zur Verfügung stellen.
Grüße,
Harald
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|