lstd.net
当前位置:首页 >> oDE45解微分方程组 >>

oDE45解微分方程组

使用ode45解微分方程组,可以用下列格式来求解.[t,x]=ode45(odefun,tspan,x0) 式中:odefun给复定微分方程组的自定义函数;tspan自变量t的范围,制即【t0,tf】;x0x的初值向量,即x1(0),x1'(0),x2(0),x2'(0),x3(0),x3'(0) 由于没有给出自zd变量t的范围和x的初值,所以不能得到其x1,x2,x3的值.

这个方程要解出来还要初始条件吧不妨设(x(0),y(0))=(A,B);还有用ode45只能得到数值解,不能给出解析式表达那么先建立一个函数文件test_fun.mfunction dx=tsst_fun(x,t)dx(1)= c-b*x(1)-w*x(1)*x(2);dx(2)=w*x(1)*x(2)-(b+m)*x(2);那么调用ode45x0=(0,0);t0=0:0.01:10;;%根据你所想要的求得值设定t0,间隔是任意的,与求解所用的步长无关,[x,t]=ode45(@test_fun,t0,x0);得到了

ode45是最常用的求解非刚性微分方程(组)的指令,它采用变步长四、五阶Runge-Kutta法,求解精度比ode23、ode15要高.但ode45的计算量比较大,而ode23计算量小,且误差大 调用格式:[t,y]=ode45(odefun,tspan,y0) odefun 用以表示f(t,y

主函数和子函数均没有错误将主函数中第一行[T,Y]=ode45('Mx1',20,[ 1; 1; 1; 2;3]);中的积分范围改为500,即可!

建立myfun.m文件,把以下代码复制进去function dx=myfun(t,x)dx=zeros(2,1);dx(1)=4*x(1)+x(2).^2;dx(2)=8*x(1)+2*x(2).^2+5*x(2);运行以下代码t=[0 0.1];x0=[1 1];[tt,xx]=ode45('myfun',t,x0);plot(tt,xx(:,1),'-',tt,xx(:,2),'-.')%画出两者图像

只告诉你调用ode45的方法[x,y]=ode45('odex',[t0,tf],y0,tol,trace)odex代表定义函数f(x,y)的m文件名;t0,tf分别为积分的初值和终值;y0是初始状态的列向量;tol是控制解的精度,可省略,缺省值为1E-6;trace决定求解过程中中间结果是否省略,缺省值为0,表示不显示.举个应用的例子:解y'=y-2*x/y,y(0)=1先编个M函数文件,比如命名为pp.mfunction dy=pp(x,y)dy=[y-2*x/y];然后只需使用命令:[x,y]=ode45('pp',[0 20],1) 即可求解

首先,不要求你多么的精通matlab,但能够理解你的代码中的那几条注释语句就可以了,否则就不要继续往下看了测试结果:代码没问题,没有语法错误;算法没问题,可以用45阶龙格库塔求解;精度没问题,该方程可以使用ode45默认

一个二阶微分方程:y''+y'+y=sin(t)初始条件为y(0)=5,y'(0)=6.过程:先降阶为一阶微分方程组y'=zz'=-z-y+sin(t)编制如下函数m文件function dy=weifen(t,x)dy=zeros(2,1);%y=x(1)%z=x(2)dy(1)=x(2);dy(2)=sin(t)-x(2)-x(1);然后用ode45解方程[t,y]=ode45(@weifen,[0 20],[5 6])plot(t,y)就可以画出y和y'的图像

任务占坑

function test() p0=0.6;q0=0.7; a1=0.07; b1=0.04; s1=0.3; k1=0.5; m1=1800; w1=0.5; c1=3; a2=0.04; b2=0.02; s2=0.4; k2=0.4; m2=1500; w2=0.4; c2=2; u1 = (a1 - b1) * s2 * k2 * m2 + w1; u2 = (a2 - b2) * s1 * k1 * m1 + w2; [t, y] = ode45(@func, [0, 5], [

网站首页 | 网站地图
All rights reserved Powered by www.lstd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com