如何用matlab求解一个二阶常系数微分方程组
第一种方法:利用dsolve函数求微分方程的符号解(通解):对于一些不是很难,要求出通解的微分方程,用dsolve函数求解。
1、 打开Matlab软件-->点击新建脚本菜单,新建一个脚本文件用于编写微分方程求解程序。
2、 输入微分方程求解程序-->点击保存-->点击运行。
3、在matlab的命令窗口即可看到求解结果,是一个关于参数a,b的表达式
第二种方法:利用Matlab中的solver函数(包括ode45、ode23、ode15s等)来求解微分方程的数值解,这种方法是最常用的方法,对于dsolve函数难以求解的方程就可以利用这种方法求解方程的数值解。
1、 打开Matlab-->新建一个脚本文件用于编写求解程序。
2、 在脚本文件中输入求解程序-->点击保存-->点击运行。
3、 这里需要先编写一个函数文件用于表示方程-->点击保存-->编写求解程序-->点击保存-->点击运行。
4、在figure页面就可以看到所求解的微分方程的图形。
一、理论解,用dsolve函数(在command window 中输入doc dsolve可以查看帮助)
示例:
代码:
[x,y]=dsolve('D2x+2*Dx=x+2*y-exp(-t)','Dy=4*x+3*y+4*exp(-t)')
二、数值解,用ode45,或ode23, ode15s其他函数。(在command window 中输入doc ode45可以查看帮助)
示例:
1. 建立M文件
function dy=vdp(t,y)
dy=[y(2);
1000*(1-y(1)^2)*y(2)-y(1);];
2. 调用MATLAB 函数ODE15S
[T,Y]=ode15s('vdp',[0 1000],[2 0]);
plot(T,Y(:,1));
图像为:
其中S 为方程s1,s1,s3,…为初始条件x 为自变量方程S 中用D 表示求导
数D2,D3,…表示二阶三阶等高阶导数初始条件缺省时给出带任意常数
C1,C2,..的通解自变量缺省值为t 也可求解微分方程组
例
1、dsolve('Dy=1+y^2')
结果ans =tan(t+C1)
2、y=dsolve('Dy=1+y^2','y(0)=1','x')
结果y =tan(x+1/4*pi)
3、x=dsolve('D2x+2*D1x+2*x=exp(t)','x(0)=1','Dx(0)=0')
结果x =1/5*exp(t)+3/5*exp(-t)*sin(t)+4/5*exp(-t)*cos(t)
4、S=dsolve('Df=3*f+4*g','Dg=-4*f+3*g') %解微分方程组
S =
f: [1x1 sym]
g: [1x1 sym]
计算结果返回在一个结构 S 中为了看到其中 f,g 的值有如下指令
f=S.f
g=S.g
f =exp(3*t)*(cos(4*t)*C1+sin(4*t)*C2)
g =-exp(3*t)*(sin(4*t)*C1-cos(4*t)*C2)
广告 您可能关注的内容 |