Forum: PC Hard- und Software Differentialgleichung mit Matlab


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Nico (Gast)


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!

von Gast (Gast)


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)

von Tom E. (tkon)


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

von ich (Gast)


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.

von Tom E. (tkon)


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

von Nico (Gast)


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

von Thomas (Gast)


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

von Nico (Gast)


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.