matlab中lambertw,MATLAB解常微分方程

在MATLAB中,由函数dsolve()解决常微分方程(组)的求解问题,其具体格式如下:

X=dsolve(‘eqn1’,’eqn2’,…)

函数dsolve用来解符号常微分方程、方程组,如果没有初始条件,则求出通解,如果有初始条件,则求出特解。 例1:求解常微分方程

的MATLAB程序为:dsolve('Dy=1/(x+y)','x'),注意,系统缺省的自变量为t,因此这里要把自变量写明。

结果为:-lambertw(-C1*exp(-x-1))-x-1 其中:Y=lambertw(X)表示函数关系Y*exp(Y)=X。

例2:求解常微分方程 的MATLAB程序为:Y2=dsolve('y*D2y-Dy^2=0’,’x’) 结果为: Y2 =[

exp((x+C2)/C1)] [ C2] 我们看到有两个解,其中一个是常数。 例3:求常微分方程组 通解的MATLAB程序为:

[X,Y]=dsolve('Dx+5*x+y=exp(t),Dy-x-3*y=exp(2*t)','t') 例4:求常微分方程组

通解的MATLAB程序为:

[X,Y]=dsolve('Dx+2*x-Dy=10*cos(t),Dx+Dy+2*y=4*exp(-2*t)','x(0)=2','y(0)=0')

以上这些都是常微分方程的精确解法,也称为常微分方程的符号解。但是,我们知道,有大量的常微分方程虽然从理论上讲,其解是存在的,但我们却无法求出其解析解,此时,我们需要寻求方程的数值解,在求常微分方程数值解方面,MATLAB具有丰富的函数,我们将其统称为solver,其一般格式为:

[T,Y]=solver(odefun,tspan,y0)

该函数表示在区间tspan=[t0,tf]上,用初始条件y0求解显式常微分方程 。

solver为命令ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb之一,这些命令各有特点。

例5:求解常微分方程 , ,

的MATLAB程序如下:fun=inline('-2*y+2*x*x+2*x');[x,y]=ode23(fun,[0,0.5],1)

结果为: x =

0,0.0400,0.0900,0.1400,0.1900,0.2400,0.2900,0.3400,0.3900,0.4400,0.4900,0.5000

y =

1.0000,0.9247,0.8434,0.7754,0.7199,0.6764,0.6440,0.6222,0.6105,0.6084,0.6154,0.6179

例6:求解常微分方程 的解,并画出解的图形。

分析:这是一个二阶非线性方程,用现成的方法均不能求解,但我们可以通过下面的变换,将二阶方程化为一阶方程组,即可求解。 令: , ,

,则得到:接着,编写vdp.m如下: function fy=vdp(t,x)

fy=[x(2);7*(1-x(1)^2)*x(2)-x(1)]; 再编写m文件sy12_6.m如下: y0=[1;0]

[t,x]=ode45(@vdp,[0,40],y0); y=x(:,1);dy=x(:,2);

plot(t,y,t,dy)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值