求 解微分方程组的matlab程序
来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/06/14 15:24:52
求 解微分方程组的matlab程序
方程组是:dv/dt=-c*n*p/ta*v.^2*cx+g*sin(th)
d(th)/dt=g*cos(th)/v
dx/dt=v*cos(th)
dy/dt=v*sin(th)
dp/dt=p/(r*ta)*v*sin(th)
已知:c,n,cx,g,r,ta 初值有:p,v,th,x,y,用符号表示,最后给定,如何编写matlab程序?可以有偿帮我编写,联系zengjunenke@yahoo.
方程组是:dv/dt=-c*n*p/ta*v.^2*cx+g*sin(th)
d(th)/dt=g*cos(th)/v
dx/dt=v*cos(th)
dy/dt=v*sin(th)
dp/dt=p/(r*ta)*v*sin(th)
已知:c,n,cx,g,r,ta 初值有:p,v,th,x,y,用符号表示,最后给定,如何编写matlab程序?可以有偿帮我编写,联系zengjunenke@yahoo.
![求 解微分方程组的matlab程序](/uploads/image/z/5505577-25-7.jpg?t=%E6%B1%82+%E8%A7%A3%E5%BE%AE%E5%88%86%E6%96%B9%E7%A8%8B%E7%BB%84%E7%9A%84matlab%E7%A8%8B%E5%BA%8F)
一般解非线性微分方程组可以用ode45,ode23等命令,编程时将p,v,th,x,y
记为x(5),x(1),x(2),x(3),x(4)(方便方程组函数的编写就这么记号)
下面便方程组函数,文件命名为myfun.m
function dx=myfun(t,x)
c=;n=;cx=;g=;r=;ta=;%参数项值自赋
dx=[c*n*x(5)/ta*x(1).^2*cx+g*sin(x(2))
g*cos(x(2))/x(1)
x(1)*cos(x(2))
x(1)*sin(x(2))
x(5)/r*ta*x(1)*sin(x(2))];
在另启文件,写入:
x0=[;;;;];%初值自赋
options=odeset('reltol',1e-8);%可以不写
tic
[t,y]=ode45(@myfun,[0,1],x0,options) %[0,20]范围可以自赋
toc
这种常微分方程组的求解可能会因为参数的给定和初值的赋值而死循环,要是碰到程序不能运行,就在命令窗口按下ctrl+c.停止运行,并重新修改语句.
我也只是用过几回,希望能帮上忙.
记为x(5),x(1),x(2),x(3),x(4)(方便方程组函数的编写就这么记号)
下面便方程组函数,文件命名为myfun.m
function dx=myfun(t,x)
c=;n=;cx=;g=;r=;ta=;%参数项值自赋
dx=[c*n*x(5)/ta*x(1).^2*cx+g*sin(x(2))
g*cos(x(2))/x(1)
x(1)*cos(x(2))
x(1)*sin(x(2))
x(5)/r*ta*x(1)*sin(x(2))];
在另启文件,写入:
x0=[;;;;];%初值自赋
options=odeset('reltol',1e-8);%可以不写
tic
[t,y]=ode45(@myfun,[0,1],x0,options) %[0,20]范围可以自赋
toc
这种常微分方程组的求解可能会因为参数的给定和初值的赋值而死循环,要是碰到程序不能运行,就在命令窗口按下ctrl+c.停止运行,并重新修改语句.
我也只是用过几回,希望能帮上忙.