/ / Matlab - Matrix-Differentialgleichungen [Matrixwerte aktualisieren? ] - Matlab, Matrix, Differentialgleichungen

Matlab - Matrix-Differentialgleichungen [Matrixwerte aktualisieren? ] - Matlab, Matrix, Differentialgleichungen

Schönen Tag. Ich bin daran interessiert, ein Problem der Form zu lösen:

x_dot = Ax + F,

mit Matlab. Die Verwendung eines numerischen Solvers (ode23 / ode45) scheint einfach, aber in meinem Fall sind die Matrix A und der Vektor F zustandsabhängig. Daher muss ich sie nach jedem Iterationsschritt unter Verwendung des neu abgeleiteten Zustands aktualisieren.

Kann es tatsächlich mit ode23 / ode45 gemacht werden? Muss ich einem anderen Weg folgen?

Vielen Dank im Voraus, jede Einsicht geschätzt.

Antworten:

0 für die Antwort № 1

Ihr Problem entspricht der Beschreibung von ode45 ziemlich gut. Nehmen Sie zum Beispiel die folgenden bedeutungslosen Gleichungen und lösen Sie das System numerisch für t = [0,1], x (0) = (1,1):

    A = @(t,x) [       x(2),    exp(-t)  ; ...
exp(-2*t),       x(1)  ];

F = @(t,x) [   -0.1*x(2)  ; ...
sin(2*pi*t)  ];

[t_out, x_out] = ode45(@(t,x) A(t,x)*x + F(t,x), 0:0.01:1, [1;1]);

figure();
plot(t_out,x_out(:,1), "-b");
hold on;
plot(t_out,x_out(:,2), "-r");