我正在尝试通过使用matlab ode45函数来求解耦合ODE:
这是我称为“ Rot”的函数,用于描述使用matlab ode45的这些ODE。
function omega= Rot(t,y)
omega(2,1)=(0.03*sin(3*t)*((cos(Y(1)))^2)+0.002*t^3*sin(y(1)))...
/-((cos(Y(1)))^2)+((sin(Y(1)))^2);
omega(1,1)=((0.002*t^2-omega(2,1)*sin(y(1)))...
/-cos(y(3))*sin(y(2)))*cos(y(2))+0.01*t^2+0.3*t;
omega(3,1)=(0.002*t^2-omega(2,1)*sin(y(1)))...
/-cos(y(3))*sin(y(2));
但是我收到“输入参数不足”的信息。错误。
答案 0 :(得分:0)
好的,因此通过将theta_dot
表示为方程式(3)中其他变量的函数,并将结果注入方程式(2)中,我得到(伪代码):
phi_dot = (0.03*sin(psi)*sin(3*t) - 0.002*t^2 * cos(psi)) / (sin(theta)*(cos(psi))^2 + sin(theta) * sin(psi) * sin(phi))
因此,您的ODE文件的第一个方程式仅取决于时间和状态向量。
然后在ODE文件中的第二个等式是:
psi_dot = -phi_dot * cos(theta) + 0.01*t^2 + 0.3*t
可以,因为您已经根据上一个公式计算了phi_dot
。
最后是ODE文件中的最后一个方程:
theta_dot = (-0.03*sin(3*t) + phi_dot * sin(theta) * sin(phi)) / cos(psi);
这也是可以的,因为您已经在第一个方程式中计算了phi_dot
。
然后可以将其传递给ODE求解器,它应该可以工作。 (尽管要检查我的数学)