作业帮 > 数学 > 作业

微分方程组如何用matlab解

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/05/12 05:07:43
微分方程组如何用matlab解

角度为3度,g为重力加速度,取9.8,如何得到v和t的曲线

clc
f=inline('[y(2);-1.204*(y(2)^2+y(4)^2)*cos(pi/60);y(4);-1.204*(y(2)^2+y(4)^2)*sin(pi/60)-9.8]','t','y');
[t y]=ode45(f,[0 1],[初值]);
v=sqrt(y(:,2).^2+y(:,4).^2);
plot(t,v)
带入初值,运行即可,还有角度真的是3度?
再问: 恩恩,是的,果然是高手啊,用的是ode45变步长算法对吧,不太理解这个东西,能给我稍微解释一下么
再答: f是定义方程组 ode45是求解 plot是画图
再问: 报错了,我改了之后还是报错, clc fun=inline('[y(2);-1.204*(y(2)^2+y(4)^2)*cos(pi/60);y(4);-1.204*(y(2)^2+y(4)^2)*sin(pi/60)-9.8]','t','y'); [t,y]=ode45(fun,[0,1],988); v=sqrt(y(:,2).^2+y(:,4).^2); plot(t,v)
再答: 初值是4个初值,x,y,vx,vy
再问: 哦哦,谢谢,可是出图时提示警告,出来的图也不对 clc f=inline('[y(2);-1.204*(y(2)^2+y(4)^2)*cos(pi/60);y(4);-1.204*(y(2)^2+y(4)^2)*sin(pi/60)-9.8]','t','y'); [t,y]=ode23(f,[0,1],[0.0,1.5,986.6,51.7]); v=sqrt(y(:,2).^2+y(:,4).^2); plot(t,v)
再答: 不好意思,初值的顺序搞错了应该按照x,vx,y,vy的顺序输入 clcf=inline('[y(2);-1.204*(y(2)^2+y(4)^2)*cos(pi/60);y(4);-1.204*(y(2)^2+y(4)^2)*sin(pi/60)-9.8]','t','y');[t y]=ode45(f,[0 0.681],[0 986.6 1.5 51.7])v=sqrt(y(:,2).^2+y(:,4).^2);plot(t,v)xlabel('时间t'),ylabel('和速度v')  图像有两条渐近线,t=0和t=0.681
再问: 这么奇怪的结果,我这个是一个子弹的速度和时间的方程,不符合实际啊
再答: 想来想去只可能是方程的问题 1.子弹的初始速度与水平面成3度夹角,且顺时针,那么ax就不该那么写 2.子弹受到的y方向的阻力是与重力方向相反的,第三个方程右边不应该都是负号 其他好像没什么问题了