急!matlab用龙格库塔法求解微分方程组

2025-04-07 00:45:43
推荐回答(2个)
回答1:

解方程很简单,调用ode45即可

关键是求运动时间,假设z方向坐标变为0即为落至地面运动结束,可求得运动时间的近似值及落地点坐标

代码如下:

clear all
clc
c=0.07;
u0=25;
a=pi/6;
f=@(t,x)([x(2);
-c*sqrt(x(2)^2+(x(4)-7-.35*x(5))^2+x(6)^2)*x(2);
x(4);
-c*sqrt(x(2)^2+(x(4)-7-.35*x(5))^2+x(6)^2)*(x(4)-7-.35*x(5));
x(6);
-9.81-c*sqrt(x(2)^2+(x(4)-7-.35*x(5))^2+x(6)^2)*x(6)]);

[t,Y]=ode45(f,0:.01:2,[0 u0*cos(a) 0 0 1.4 u0*sin(a)]);
n=max(find(Y(:,5)>0));
t_end=t(n)
s=[Y(n,1),Y(n,3),0]
plot3(Y(1:n,1),Y(1:n,3),Y(1:n,5))

其中t_end为运动时间
s为落地点坐标

看了半天,怎么都觉得方程不太对

再检查一下方程吧,尤其是第二个方程等号右边到底有没有负号

最后一个方程等号右边也有问题,请仔细检查

回答2:

你试试ODE45,不用给我分数,我随便说说