www.mikrocontroller.net

Forum: PC Hard- und Software Differentialgleichung mit Matlab


Autor: Nico (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sehr geehrte Damen und Herren,

ich habe ein Problem. Ich möchte mit "Matlab" für  Runge-Kutta methode 
ein Plot darstellen . Ich weiss gar nicht, wie es geht!

Vielen Dank im voraus!

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich auch nicht.

Aber es gibt einen Zauberbefehl namens "plot" sowie viele hilfreiche 
Beispiele in der Dokumentation von Matlab und auf den entsprechenden 
Webseiten (www.mathworks.com)

Autor: Tom Ekman (tkon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zur Darstellung kannst du plot oder plot3 benutzen.

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich muss sagen, Hä??
Man kann nur Vektoren gleicher Dimension plotten. Runge-Kutta ist ein 
Lösungsverfahren für Differentialgleichungen.

Autor: Tom Ekman (tkon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ich
ich hätte jetzt mal angenommen er will das Ergebnis drucken (?)

Autor: Nico (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, ich will das Ergebnis als Plot darstellen.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was hast du denn schon fertig?

Autor: Nico (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe was implementiert: Z.B: ich möchte jetzt als plot darstellen. 
Normal komme ich aus " C programmierung Ecke " , aber ich muss jetzt 
matlab programmieren. Und ich kann matlab nicht so gut.

function [res,err] = RK(a,ya,b,h_0,acc,eps);
fulfils dy/dx=f(x,y)
inc=1;
err=0;
x(inc)=a;
y(inc)=ya;
h=h_0;
inc=2;
x(inc),y(inc),y_old,err_step] = RKStep(x,y,h);
while x(inc)<b
tol=acc*sqrt(h/(b-a))+eps*y(inc)*sqrt(h/(b-a));
inc=inc+1;
if err_step>2*tol
h=h/2;
if h > (b-x(inc-1));
h = b-x(inc-1);
end
inc=inc-1;
[x(inc),y(inc),y_old,err_step] = RKStep(x(inc-1),y_old,h);
else
err=sqrt(err^2+err_step^2);
h_old=h;
h=0.95*(tol/err_step)^0.25*h;
if h>2*h_old
h=2*h_old;
if h > (b-x(inc-1));
h = b-x(inc-1);
end
[x(inc),y(inc),y_old,err_step] = RKStep(x(inc-1),y(inc-1),h);
else
if h > (b-x(inc-1));
h = b-x(inc-1);
end
[x(inc),y(inc),y_old,err_step] = RKStep(x(inc-1),y(inc-1),h);
end

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.