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

mAtlAB解微分方程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的值.

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

ode45函数 求一阶常微分方程的初值问题 [t,y] = ode45(@(t,y)y-2*t/y,[0,4],1); plot(t,y); 求解 y' y + 2*t / y且初值y(0) = 1的常微分方程初值问题,返回自变量和函数的若干个值.若不写返回值,则会自动作出函数随自变量的变化图像.ode45(@(t,y)y-2*t/y,[0,4],1);

这个方程要解出来还要初始条件吧 不妨设(x(0),y(0))=(a,b); 还有用ode45只能得到数值解,不能给出解析式表达 那么先建立一个函数文件 test_fun.m function 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); 那么调用ode45 x0=(0,0); t0=0:0.01:10;;%根据你所想要的求得值设定t0,间隔是任意的,与求解所用的步长无关,[x,t]=ode45(@test_fun,t0,x0); 得到了 这样可以么?

<p>你把lgkt中的x改成x(1)试试看,我试过应该没问题的</p> <p>function xx=lgkt(t,x)</p> <p>xx=3*x(1)+cos(t)+sin(2*t);</p> <p>[t,x]=ode45(@lgkt,[0 10],[2]);</p> <p>plot(t,x,'-o');</p> <p></p>

示例如下:odefun=@(t,y) (y+3*t)/t^2; %定义函数tspan=[0 2.3]; %求解区间 !!!!!!!!!!!!y0=-2; %初值[t,y]=ode45(odefun,tspan,y0);其中求解区间为0~2.3,那么最后结果的y的最后一个y(length(y))就是y(2.3)

function dy=myfunc(x,y)a=b=c=dy=zeros(2,1)dy(1)=y(2)dy(2)=(b*dy(2)^2-c*sin(y(1)))/a这里的dy(1)是一阶导数,所以你的初值需要给出一阶导数值

只告诉你调用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) 即可求解

function [x,y]=runge_kutta1(ufunc,y0,h,a,b) %参数表顺序依次是微分方程组的函数名称,初始值向量,步长,时间起点,时间终点,n=floor((b-a)/h); %求步数 x(1)=a; %时间起点 y(:,1)=y0; %赋初值,可以是向量,但是要注意维数 for ii=1:n x(ii+

要画成二元一价微分方程组

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