如何用matlab求解一个二阶常系数微分方程组

如题所述

第一种方法:利用dsolve函数求微分方程的符号解(通解):对于一些不是很难,要求出通解的微分方程,用dsolve函数求解。

1、 打开Matlab软件-->点击新建脚本菜单,新建一个脚本文件用于编写微分方程求解程序。

2、  输入微分方程求解程序-->点击保存-->点击运行。

3、在matlab的命令窗口即可看到求解结果,是一个关于参数a,b的表达式

第二种方法:利用Matlab中的solver函数(包括ode45、ode23、ode15s等)来求解微分方程的数值解,这种方法是最常用的方法,对于dsolve函数难以求解的方程就可以利用这种方法求解方程的数值解。

1、  打开Matlab-->新建一个脚本文件用于编写求解程序。

2、 在脚本文件中输入求解程序-->点击保存-->点击运行。

3、 这里需要先编写一个函数文件用于表示方程-->点击保存-->编写求解程序-->点击保存-->点击运行。

4、在figure页面就可以看到所求解的微分方程的图形。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-12-16

一、理论解,用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));

图像为:

本回答被提问者和网友采纳
第2个回答  2012-11-02
用命令:dsolve('S','s1','s2',…,'x')
其中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)
相似回答