我想要解决这个DE系统:
function ydot= DRV(y)
B=[1 0.5 4;7.2 0.6 5;3.3 8 0.2];
R1=[2 5 3;11 3 6;1.2 2 4];
Q1=eye(3,3);
qv=[y(1);y(2);y(3)];
p=[y(4) y(5) y(6);y(7) y(8) y(9);y(10) y(11) y(12)];
qvdot=p*qv;
pdot=p*B*inv(R1)*p+Q1;
v=Q1*p*R1*qv;
vdot= % Is there any matlab function to derive v automatically?
zdot=Q1*v+R1*vdot;
pdot=pdot(:);
ydot=[qvdot;pdot;zdot];
ydot(:);
end
如何在不输入其导数的精确表达式的情况下求出v的数值导数?例如,要求逆矩阵A,只需添加inv(A)即可。是否有类似的函数来派生表达式?
然后,我将使用带有ode45的函数:
[t,y]=ode45(@(t,y)DRV(y),[0 10],[0.8224 0.2226 0.4397 0.3604 -1.5 -5.9 -6.5 0 0 0 0 0 0 0.1 0.2])
1条答案
按热度按时间ddrv8njm1#
尝试使用matlab符号工具箱,您无法计算数值导数,然后将其用于其他数值算法,如Runge-Kutta(ODE45),除非您编写自己版本的ODE求解器。