非线性微分方程的求解,非线性微分方程求解的意义

http://www.itjxue.com  2023-01-04 15:44  来源:未知  点击次数: 

(急求)关于用matlab求解非线性微分方程组的问题

没解析解你肯定得用数值解。以下是步骤。

第一步,在matlab里写m-file,命名微分方程对应的函数:

function

f=myfun(t,x)

f

=

[-x(1)+x(2)^2;

-2*x(2)+x(1)^2];

这里的x(1)就是你这儿的x,

x(2)就是你这儿的y。写完后自动保存,不要对保存目录做任何修改,文件名就叫myfun.m。

第二步,在matlab命令窗口里写命令:

s=[0:0.01:10];x0=[1,1];

[t,x]=ode45('myfun',s,x0);

plot(x(:,1),x(:,2))

就完了。第一行是在设置画图的范围,s就是画图的区间,0.01是步长,0和10是t的起点和终点,这些你都可以自行设定(步长越小图形越精确),x0是初始值;第二行是在解微分方程,t为自变量(注意在上一步定义函数的时候一定要把t也定义进去,不然matlab不会认为这是个微分方程);第三行就是画相图了。

方程的解就保存在变量t和x里,s里面有多少个点你就会得到多少个x和y。

解非线性微分方程

令a= kf(l, m), b= g(v, w).

则dx/dt= ax(1-x)-bx= (a-b)x-ax2 x(0)=x0

①若a-b=0, 则 dx/dt=-ax2 即有dx/(-ax2)=dt

两边积分得1/ax=t+C, 因此x=1/a(t+C).

由x(0)=x0知 C=1/ax0

因此x=1/a(t+1/ax0)=1/(at+1/x0)

②若a-b≠0, 则 dx/dt=-ax2+(a-b)x

这是一个里卡蒂方程,一个特解是x(t)=(a-b)/a,

令x=1/y+(a-b)/a, y=1/(x-(a-b)/a)

则dy/dt=-1/(x-(a-b)/a)2·(-ax2+(a-b)x)=ax/(x-(a-b)/a)=(a/y+a-b)/(1/y)=a+(a-b)y

这个方程可以直接积分求解,

得到a+(a-b)y=Ce^(a-b)t也就是y=(Ce^(a-b)t-a)/(a-b)

所以x=(a-b)/(Ce^(a-b)t-a)+(a-b)/a,

由x(0)=x0知 C=(a-b)/(x0-(a-b)/a)+a

因此x=(a-b)/(((a-b)/(x0-(a-b)/a)+a)e^(a-b)t-a)+(a-b)/a

=(a-b)/a((ax0/(ax0-(a-b)))e^(a-b)t-1)+(a-b)/a

=(a-b)((ax0/(ax0-(a-b)))e^(a-b)t)/a((ax0/(ax0-(a-b)))e^(a-b)t-1)

把上面那个式子整理一下应该就能得到方程的解的样子了。

非线性微分方程求解

这是非齐次微分方程,需要求出其对应的齐次微分方程的两个线性无关的解:

y3-y1 和 y2-y1

于是齐次微分方程的通解为:

c1(y3-y1) + c2(y2-y1)

非齐次微分方程的通解=齐次微分方程的通解+非齐次微分方程的特解

于是非齐次微分方程的通解为:

c1(y3-y1) + c2(y2-y1) + y1

代入上面式子得通解为:

y = (c1 + c2x)e^2x + x

如何Matlab解三元二阶非线性微分方程组?

三元二阶非线性微分方程组用Matlab解,可以按下列思路求解。

首先,自定义微分方程组函数,其内容:

dy(1)=x(2);%降阶

dy(2)=0.6615-(0.3*x(2)+2848*x(1)+0.0025*x(3)+1.227e3*(x(1)^3+x(1))/(x(1)^2-1e-4))/0.0675

dy(3)=(0.025*x(2)-x(3)/2e5)/2.135

其二,确定初值,x0=[0,0,0];

其三,确定时间变量范围,t【0,10】

其四,用ode45函数求解。其命令格式

[t,x]=ode45(@func,tspan,x0)

其五,用plot函数绘制t—x(t)、t—dx/dt、t—V(t)

执行结果,可以发现,该方程似乎为振动型方程,其x的振幅为±3.8,Vx速度为±800,Vx速度为±4e-3

(责任编辑:IT教学网)

更多

相关微软认证文章

推荐微软认证文章