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 № 1Ihr 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");