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

Negative Werte bzw. Ergebnisse in DGL auf 0 setzen

 

Studicus
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 04.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2014, 20:23     Titel: Negative Werte bzw. Ergebnisse in DGL auf 0 setzen
  Antworten mit Zitat      
Hallo Zusammen,

derzeit sitze ich an einer Studienarbeit; ich habe derzeit zwei Differentialgleichungen:
Code:

G_Blut = - G_elim - G_elimInsulin * I_Blut + G_einstrom;
I_Blut = I_sekretion * G_Blut - I_elim + I_einstrom;
 


die ich mit
Code:

[t,x] = ode15s('blood_glucose',[0 handles.Simulationszeitraum],x_ss);
 

löse. Funktioniert auch alles wunderbar.

Jetzt ist es aber so das negative Werte für G_Blut bzw. I_Blut keinen Sinn machen. Wie kann ich nun vermeiden das negative Werte für z.B. G_Blut in meinem Ergebnisvektor auftauchen bzw. das nicht mit negativen Werten gerechnet wird sondern diese auf 0 gesetzt werden?

Ein einfaches

Code:
if (G_Blut(t) < 0 ) G_Blut(t) = 0; end


in meiner Funktion haut nicht hin.

Grüße & Danke für eure Hilfe
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.05.2014, 21:18     Titel:
  Antworten mit Zitat      
Hallo,

wo setzt du diese Zeile
Code:
if (G_Blut(t) < 0 ) G_Blut(t) = 0; end

und inwiefern erreichst du damit nicht das gewünschte?

Bitte den Code von blood_glucose.m posten.

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

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 04.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2014, 21:29     Titel:
  Antworten mit Zitat      
Hallo Harald,

die Zeile
Code:
if (G_Blut(t) < 0 ) G_Blut(t) = 0; end


wollte ich in blood_glucose.m setzen.

Diese enthält auch nicht viel mehr als
Code:

G_Blut = - G_elim - G_elimInsulin * I_Blut + G_einstrom;
I_Blut = I_sekretion * G_Blut - I_elim + I_einstrom;
 


abgesehen von ein paar Parametern.

Matlab bricht hier jedoch mit einer Fehlermeldung in der blood_glucose.m ab. Jedoch habe ich hier den "Fehler" von einem Kollegen erklärt bekommen.

Hier muss ich statt

Code:

[t,x] = ode15s('blood_glucose',[0 handles.Simulationszeitraum],x_ss);


Code:

[t,x] = ode45('blood_glucose',[0 handles.Simulationszeitraum],x_ss,options);
 


verwenden. Dem Solver ode45 kann man als Option mitgeben nicht mit negativen Werten zu rechnen bzw. diese auf 0 zu setzen; dem ode15s wohl nicht.

Stichwort
Code:
Smile

Viele Grüße & Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.05.2014, 21:47     Titel:
  Antworten mit Zitat      
Hallo,

für die Zukunft:
Zitat:
Matlab bricht hier jedoch mit einer Fehlermeldung in der blood_glucose.m ab.

Die entscheidende Frage wäre dann: welche Fehlermeldung!

Das (t) in dem Code sieht mir nicht sinnvoll aus - wirklich beurteilen lässt sich das aber nicht, ohne den Code und vor allem die Fehlermeldung zu sehen.

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 - 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.