WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

implizite Eulermethode

 

Omikron123
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 06.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.12.2012, 16:34     Titel: implizite Eulermethode
  Antworten mit Zitat      
Code:
function [t,y] = exeuler(f,ti,yi,tmax,h)

    n = (tmax-ti)/h; %Calculate steps

    %The first elements take xinit and yinit corespondigly, the rest fill with 0s.
    t = [ti zeros(1,n)];
    y = [yi zeros(1,n)];

    for k = 1:n
        t(k+1) = t(k)+h;
        ynew = y(k)+h*(f(t(k),y(k)));
        y(k+1) = y(k)+h*f(t(k+1),ynew);
    end
end


Dieses Programm habe ich soeben für das implizite Eulerverfahren geschrieben.

Nun möchte ich die Differentialgleichung y'(t)=1-y(t) lösen wobei y(0)=0 und t>0. Diese Diff-Gleichung beschreibt den Fall eines Teilchen mit Luftwiderstand, wie muss ich die Anfangswerte wählen wenn das Teilchen bei t=0 ruht? exeuler(1-y,0,0,5,0.1) nimmt Matlab nicht.

Ich würde anschließend gerne einen Plot erstellen, bei dem die genaue Lösung y(t)=1+e^(-t) mit der approximierten vergleichen wird, wie schaut hier der Befehl aus?
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.12.2012, 20:17     Titel:
  Antworten mit Zitat      
Hallo,

soll es nun impliziter oder expliziter Euler sein? Du schreibst implizit, aber das sieht mir eher nach explizit aus.
Für den Aufruf musst du ein Function Handle verwenden, siehe MATLAB Doku oder auch hier:
http://www.gomatlab.de/tutorial-kei.....function-handle-t545.html

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Omikron123
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 06.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.12.2012, 20:42     Titel:
  Antworten mit Zitat      
Ich denke schon, dass es sich um die implizite Methode handelt, bei der expliziten hätte ich ja das ynew nicht.

Ich bekomme die Eingabe auch mit @ nicht hin.

Vielleicht könntest du es dir einmal mit einem konkreten Zahlenbeispiel anschauen, ich gebe wahrscheinlich irgendwas falsch ein.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.12.2012, 22:19     Titel:
  Antworten mit Zitat      
Hallo,

lass uns doch bitte wissen, was du genau probiert hast.

Das Function Handle sollte @(t,y) 1-y sein.
Mir fällt auch auf, dass deine Funktion 5 Argumente erwartet, du aber nur 4 übergibst.

Implizite Methoden beinhalten die Lösung eines nichtlinearen Gleichungssystems. Davon sehe ich hier nichts.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Omikron123
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 06.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.12.2012, 14:40     Titel:
  Antworten mit Zitat      
Ich habe beim Codieren nicht mitgedacht, dass ist natürlich kein implizites Euler-Verfahren.

Gibt es irgendwo eine einfache Musterlösung für einen Matlab Code, welcher "y_(k+1)=y_k+hf(t_k,y_(k+1))" löst?

Eine Frage hätte ich noch. Worin liegt der Unterschied zwischen y(:,k+1) und y(k+1) ?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.12.2012, 16:48     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Gibt es irgendwo eine einfache Musterlösung für einen Matlab Code, welcher "y_(k+1)=y_k+hf(t_k,y_(k+1))" löst?

Nicht dass ich wüsste. Ich würde fzero dafür verwenden.

Zitat:
Worin liegt der Unterschied zwischen y(:,k+1) und y(k+1) ?

Das erste ist die k+1 -te Spalte einer Matrix, das zweite das k+1 -te Element eines Vektors oder einer Matrix.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 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.