ich versuche als Matlab-Neuling eine im Prinzip recht simple Differentialgleichung in Matlab umzusetzen, aber ich bekomme das nicht hin und finde keine passende Anleitung dazu. Sie hat die Form:
a(t)=k*a(t-1)
Es gibt eine Reihe von Zeitwerten. Jedem Zeitwert soll ein a-Wert zugeordnet sein, der sich aus dem vorigen a-Wert berechnet.
Zweck ist die Entwicklung von a zu berechnen und Grafisch darzustellen. Leider sind die Tutorials zu Differentialgleichungen eher auf das Lösen konzentriert und ohne Hintergrundwissen nur schwer zu verstehen. Wäre echt super wenn mir jemand einen Tipp geben könnte wie es geht, oder wo es für den Mathelaien ein Tutorium dafür gibt.
Ich empfehle, einfach mal ein Tutorial durchzuarbeiten. Die Lösung für diese spezielle Aufgabe wird da nicht unbedingt drin sein, aber es sollte in dem Stadium auch mehr darum gehen, sich Konzepte zu erarbeiten.
Vielen Dank! Das hilft mir sehr weiter. Jetzt wo ich weiß wie das ungefähr aussieht kann ich geeignete Tutorials erkennen und mir den rest hoffentlich selbst erarbeit
for t = 2:100
CRH(t) = CRH(t-1);
ACTH(t) = ACTH(t-1);
CORTISOL(t) = CORTISOL(t-1);
end for t = 100:300
CRH(t) = ((alpha1*V)/(K+(CORTISOL(t-tau2))^m))-b1*CRH(t-1);
ACTH(t) = ((alpha2*V)/(K+(CORTISOL(t-tau2))^m))+g1*CRH(t-1)-b2*ACTH(t-1);
CORTISOL(t) = g2*ACTH(t-tau1)-b3*CORTISOL(t-1);
end
%Graph erzeugen
plot(CRH,'Color','red','LineWidth',1);
holdall plot(ACTH,'Color','green','LineWidth',1);
holdall plot(CORTISOL,'Color','blue','LineWidth',1);
title('Numerische Simulation der HPA-Achse mit den Originaldaten') xlabel('t [min]') ylabel('c [pmol/L]')
Die Lösung mit Hilfe von Differenzengleichungen ist leider nicht genau genug. Das Problem
sollte ungefähr so aussehen:
Ich habe relativ lange versucht die Beispiele für Differenzielgleichungen in Matlab für meine Zwecke zu modifizieren, aber die Beispiele sind für meine bescheidenen Matlab Kenntnisse zu kompliziert oder unterscheiden sich zu stark von meinem Problem und ich bekomme das nicht hin. Kann mir vielleicht jemand weiterhelfen? Kennt jemand ein gutes Tutorial das für Anfänger verständlich ist?
ein und schau dir da Beispiele 1 und 2 an. Das ist an und für sich schön erklärt. Im wesentlichen 2 Schritte:
1. Schreibe eine MATLAB-Datei, die dir die "rechte Seite" der Differenzialgleichungen als Vektor zurückgibt.
2. Verwende ode45 (oder ähnliche) mit einem der Standardaufrufe.
Ich hab das nochmal probiert und ich verstehe die Beispiele auch, aber der Unterschied zu meiner Aufgabe ist, dass in den Beispielen die Abhängigkeit der Funktionen dy(1) bis dy(3) nur zu einem Zeitpunkt besteht. Z.B.
Wenn ich ein dy nicht vom aktuellen Zeitpunkt, sondern von einem vorausgegangenem Zeitpunkt verrechnen will, wie ich das in den Differenzengleichungen gemacht habe...
for t = 100:300
CRH(t) = ((alpha1*V)/(K+(CORTISOL(t-tau2))^m))-b1*CRH(t-1);
ACTH(t) = ((alpha2*V)/(K+(CORTISOL(t-tau2))^m))+g1*CRH(t-1)-b2*ACTH(t-1);
CORTISOL(t) = g2*ACTH(t-tau1)-b3*CORTISOL(t-1);
end
Ah, da hatte ich dann nicht genau genug hingeschaut. Das ist dann eine Delay Differential Equation, und kann in MATLAB wohl am besten mit DDE23 gelöst werden. Das habe ich allerdings noch nicht ausprobiert.
Grüße,
Harald
Einstellungen und Berechtigungen
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
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.