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

Problem mit ODE45-Funktion

 

PeterK
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 23.12.13
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 10.06.2014, 22:25     Titel: Problem mit ODE45-Funktion
  Antworten mit Zitat      
Hallo alle zusammen,

mit meinem Matlab Program löse ich gekoppelte Ratengleichungen. Leider muss ich die berechneten dn/dt Werte mit der "Summe aller dndt-Werte"-Skalieren, aber da diese noch gar nicht berechnet wurden, bekomem ich eine Fehlermeldung.... hört sich verwirrend an, daher erstmal der Code Smile

In meinem Hauptfile rufe ich die ODE-Rutine folgendermaßen auf:

Code:
fname='Rate_Equation'
[t,n]=ode45(fname,tspan,n0,sigma_abs);


tspan ist der Zeitvektor für den die Werte von n berechnet werden sollen. fname definiert mir die gekoppelte Ratengleichungen. In echt ist sie etwas länger... ich habe sie gekürzt um nicht das eigentliche Problem aus den Augen zu verlieren. Ich hoffe die Syntax ist noch in Ordnung. Jedenfalls fname lautet also:

Code:
function dndt = Rate_Equation(t,n,sigma_abs)
dndt=(-n.*sigma_abs)/sum(dndt);
end


n und sigma_abs sind Vektoren. Das Problem ist nun, dass die berechneten dndt-Werte noch skaliert werden müssen, und zwar mit der Summe aller dndt-Werte. Und genau das ist das Problem!

dndt wurde ja noch nicht berechnet, daher gibt mir Matlab (verständlicherweise) eine Fehlermeldung.

Hat jemand eine Idee oder einen Vorschlag wie ich dieses Problem lösen könnte! Ich bin über jeden Kommentar dankbar! Smile
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: 10.06.2014, 23:07     Titel:
  Antworten mit Zitat      
Hallo,

teile es halt auf zwei Zeilen auf:

Code:
dndt=(-n.*sigma_abs);
dndt = dndt/sum(dndt);


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.