Zeichnen von Zwischenvariablen im ode45-Löser in Matlab
Ich habe ein System von drei Differentialgleichungen, die ich in einem benutzerdefinierten Funktion definieren Differential :
function dvdt = differential(t,v) global rho kappa phi tau xi N1 N2 p b delta alpha mu sigma c_t theta lambda; dvdt = zeros(3,1); g=v(1); x1=v(2); x2=v(3); dvdt(1) = rho - kappa*(N1*(1-x1)*g1 + N2*(1-x2)*g2); dvdt(2) = phi*x1*(pi_t1-pi_1); dvdt(3) = phi*x2*(pi_t2-pi_2);
Die Zwischenvariablen, die zum Lösen der obigen drei Differentialgleichungen verwendet werden, sind wie folgt:
g1 = min(g/(kappa*(N1*(1-x1)+N2*(1-x2))),gstar); g2 = min(g/(kappa*(N1*(1-x1)+N2*(1-x2))),gstar); c_g = max(tau*(xi-g),0) + delta; gstar = (p-c_g)/(2*b); M = alpha*(N1*x1+N2*x2) + mu*(N1*(1-x1)+N2*(1-x2)); R= (1 - theta/(1+(lambda*M))) * (sigma); tstar = (p-c_t)/(2*b); t1 = min(R/(N1*(1-x1)+N2*(1-x2)),tstar); t2 = max((R-N1*x1*t1)/(N2*(1-x2)), 0); pi_t1 = max((p*t1(:,1) - b*t1.^2 - c_t*t1(:,1) - alpha),0); pi_t2 = max((p*t2(:,1) - b*t2.^2 - c_t*t2(:,1) - alpha),0); pi_g1 = max((p*g1(:,1) - b*g1.^2 - c_g*g1(:,1) - mu),0); pi_g2 = max((p*g2(:,1) - b*g2.^2 - c_g*g2(:,1) - mu),0); pi_1=pi_t1*x1+pi_g1*(1-x1); pi_2=pi_t2*x2+pi_g2*(1-x2);
Derzeit nenne ich die Differentialfunktion in Hauptfunktion und die Differentialfunktionen in der Handlung Hauptfunktion:
[T, V] = ode45(@(t,v) differential(t,v), [0:1/200:20], [G0 X1_init X2_init]); gt = V(:, 1); x1t = V(:, 2);x2t = V(:, 3); plot(x1t, x2t, 'k');
Mein Problem ist, dass ich auch einige Zwischenvariablen plotten muss. Also, ich bin verwirrt darüber, wo sie definieren, das heißt, wenn sie in der festgelegt werden sollen Hauptfunktion oder in der Differentialfunktion, wie zu speichern, und wie diese Variablen nennen.
Idealerweise hätte ich gerne den Code, um sowohl die Differentialfunktionen als auch die Zwischenvariablen in der Hauptfunktion aufzuzeichnen. Aber ich kann nicht verstehen, ob das möglich ist. Kann jemand bitte beraten? Vielen Dank!
- Sam
0 Antworten auf die Frage
Verwandte Probleme
-
1
Simulink ist für Matlab wie _______ für Mathematica?
-
1
webMathematica ist für Mathematica wie _________ für Matlab
-
6
Wo ist meine Software in Linux installiert?
-
4
Wie kann die Ausführung eines Matlab-Programms beschleunigt werden?
-
1
Ändern Sie die Datei von .mat in .txt
-
1
MATLAB-Säulenumwicklung
-
1
Wie kann ich das Befehlsfenster von matlab in emacs verwenden?
-
2
So legen Sie den Remotecomputer so fest, dass Matlab über die Weiterleitung von ssh und x11 ausgefüh...
-
1
Unterscheidung zwischen a / b-Versionen von Matlab?
-
1
'ttest'-Funktion funktioniert in Matlab nicht