非线性微分方程的求解,非线性微分方程求解的意义
(急求)关于用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