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

 我来答
肥仙女a
高粉答主

2020-05-01 · 我是游戏小达人,专注于分享游戏资讯。
肥仙女a
采纳数:477 获赞数:115569

向TA提问 私信TA
展开全部

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

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

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

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

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

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

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

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

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

minquan一人
推荐于2017-12-16 · TA获得超过857个赞
知道小有建树答主
回答量:150
采纳率:100%
帮助的人:172万
展开全部

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

图像为:

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我行我素850915
2012-11-02 · TA获得超过8241个赞
知道大有可为答主
回答量:5788
采纳率:77%
帮助的人:1707万
展开全部
用命令: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)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式