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

Intergration von DGL

 

isomer
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.12.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.03.2009, 20:30     Titel: Intergration von DGL
  Antworten mit Zitat      
Hallo!

Ich hätte mal eine Frage bezüglich Differrenzialgleichungen.
Ich hab hier eine DGL die die Insulinregulierung beschreibt.

dy/dt = a*(M-y)-b*y + p/v

als angaben für p hab ich w fälle

p(t)= -40(t^2-4t+3) 1 < t < 3
im anderen fall ist p(t) Null

Wie kann ich das im m-file definieren um die Integration der DGL zu ermöglichen?

Danke
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.03.2009, 11:07     Titel:
  Antworten mit Zitat      
Wenn ich die Frage richtig verstehe, folgendermaßen:

Code:
function value = fctn(t, y)

if t > 1 && t < 3
        p= -40*(t^2-4t+3);
else
        p = 0;

value = a*(M-y)-b*y + p/v;


Natürlich müssten a, b, M und v noch definiert werden.
Das ganze dann z.B. in ODE45 stecken und fertig.

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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.12.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.03.2009, 14:44     Titel:
  Antworten mit Zitat      
Hallo!

Danke für die schnelle Antwort.
Ich hab aber noch eine frage.
Ich hab da jetzt noch eine zweite DGL und die beiden DGL hängen zusammen.

DIe zweite DGL wäre

dx/dt = c*[y-M]-d-q/v

Ich hab die Variablen c,d q im m-file definiert. Aber irgendwie bekomme ich den zusammenhang der DGL nicht hin. Ich weiß nicht, wie man das im m-file schreibt.
Weiters muss ich auch noch die Anfangsbedingungen definieren für ode45, aber da hab ich auch irgendwie ein problem.
Die Anfangsbedingungen sind y(0)=0.75, und x(0)= 0.

Wäre super wenn mir wer helfen kann.
Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.03.2009, 16:39     Titel:
  Antworten mit Zitat      
Das ist in der MATLAB-Hilfe an einem Beispiel beschrieben, wenn man nach ode45 sucht (erster Treffer, etwa zur Hälfte scrollen)

Für den vorliegenden Fall würde das so aussehen:

Code:
function dy = fctn(t, y)

dy(1) = c*(y-M)-d-q/v;
dy(2) = a*(M-y)-b*y + p/v;


Aufruf wäre dann unter Berücksichtigung der Anfangsbedingungen

Code:
[T,Y] = ode45(@fctn, [0 Tmax], [0 0.75])


wobei Tmax die Simulationszeit ist.
Private Nachricht senden Benutzer-Profile anzeigen
 
isomer
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.12.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.03.2009, 20:51     Titel:
  Antworten mit Zitat      
vielen Dank!
Hab es eh auch so ähnlich probiert. Hat aber irgendwie nicht funktioniert.
Private Nachricht senden Benutzer-Profile anzeigen
 
isomer
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.12.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.03.2009, 21:28     Titel:
  Antworten mit Zitat      
Wenn ich das so eintippe, wie es oben ist dann komm immer folgende fehlermeldung oder meldungen

??? Undefined function or variable "c".

Error in ==> versuch at 2
dy(1)=[c*(y-m)-d+q/v];

Error in ==> odearguments at 111
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.

Error in ==> ode45 at 173
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...

ich hab aber die einzelnen werte im m-file angegeben.
Was kann ich da noch falsch machen?
Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.03.2009, 21:38     Titel:
  Antworten mit Zitat      
Die Variable c ist offensichtlich nicht definiert. Darauf achten, dass c definiert wird, BEVOR es verwendet wird.

Empfehlung: Bei Fehlermeldungen immer den Anfang und das Ende lesen. Der Rest ist meist Folgefehler.
Private Nachricht senden Benutzer-Profile anzeigen
 
isomer
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.12.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2009, 01:06     Titel:
  Antworten mit Zitat      
Hallo

Den Fehler hab ich jetzt beseitigt, jetzt hab ich aber die nächste Fehlermeldung bekommen.

??? In an assignment A(I) = B, the number of elements in B and
I must be the same.

Error in ==> versuch at 14
dy(1)=[c*(y-m)-d+q/v];

Error in ==> odearguments at 111
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.

Error in ==> ode45 at 173
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.03.2009, 10:10     Titel:
  Antworten mit Zitat      
Sehe ich nicht auf Anhieb.

Vermutung: y kommt als Vektor rein. Es müsste also heissen:

Code:
function dy = fctn(t, y)

dy(1) = c*(y(2)-M)-d-q/v;
dy(2) = a*(M-y(2))-b*y(2) + p/v;


Ist in dem Fall weder dx noch dy direkt von x abhängig? Falls doch, müsste man dafür y(1) verwenden.

Am besten auch mal den bisherigen Code posten, oder per PN schicken, wenn es noch Probleme gibt.
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.