matlab课设 三阶微分方程多种方法求解.docx
《matlab课设 三阶微分方程多种方法求解.docx》由会员分享,可在线阅读,更多相关《matlab课设 三阶微分方程多种方法求解.docx(8页珍藏版)》请在冰豆网上搜索。
matlab课设三阶微分方程多种方法求解
目录
一、课程设计题目及意义
————————1页
二、课程设计任务及要求
————————2页
三、课程设计详细过程及结果
————————3至10页
四、课程设计体会
————————10至11页
华东交通大学
09软件+电气4班
陈忱
课程设计题目:
用三种以上方法求解三阶微分方程
课程设计目的及意义:
通过使用多种方法求解三阶微分方程可以熟悉matlab中各种数学计算方法,例如数值型方法,符号方法,建立数学模型的方法。
首先数学计算方法在工程应用中十分广泛,使用matlab编程,往往只要几个语句就可以求解任务,具有效率高,使用方便的特点,通过课程设计我们可以充分体验到。
Matlab符号计算是通过集成在matlab中的符号运算工具箱的Maple软件的基础上,使用符号计算可以获得比数值计算更一般的结果,获得的结果以变准的符号形式来表现。
数学模型的方法是通过Simulink系统仿真来实现,它提供了图形用户界面,操作简单,内容丰富,可以根据用户的不同输入很方便的得到仿真结果,这些都可以在课程设计中来具体操作实现,让我们对matlab强大的数学计算功能有个更深刻详细的认识。
课程设计任务及要求:
假设微分方程为三阶的如:
y’’’(t)+0.2y’’(t)+0.4y’(t)+0.8y(t)=0.5u(t),其中u(t)为单位斜坡函数。
分别用数值型方法,符号方法,建立数学模型的方法解之。
其中建立数学模型仿真的方法要用三种方法:
传递函数法,状态方程方法以及时域分析法。
并分别用示波器或图形观测窗口显示输出与输入图形。
课程设计过程:
1数值型方法
步骤:
1:
在Matlab下输入:
edit;
2:
在其中输入如下代码
functionDYDt=amanm(t,Y)
y=Y
(1);
dydt=Y
(2);
d2ydt2=Y(3);
DYDt=[Y
(2);Y(3);0.5-0.8*y-0.4*dydt-0.2*d2ydt2];
3:
保存.m文件;
4:
在Matlab命令行下面输入:
t_start=0;
t_end=20;
yy0=[0;0;0];%初值
[t,y]=ode45('amanm',[0,t_end],yy0);%ode45是用4阶方法提供候选解,5阶方法控制误差,是一种自适应步长的方法。
plot(t,y(:
1));
xlabel('t');
ylabel('y')
y(end,1)
2符号方法
对于使用符号方法求解三阶微分方程必须了解matlab的dsolve函数,Mathematica 函数Dsolve求微分方程的符号解.(而另一方面,Mathematica 函数NDsolve 是一个普遍的数值微分方程解算器.)Dsolve(eq,c,v)该函数求解常微分方程eq在初值条件c下的特解。
参数v描述方程中的变量,省略时按照默认原则处理,若没有给出初始条件c则求方程的通解。
所以题目中的三阶微分方程y’’’(t)+0.2y’’(t)+0.4y’(t)+0.8y(t)=0.5u(t)可以写成D3y+0.2*D2y+0.4*Dy+0.8*y=0.5。
在matlab命令行中输入如下代码:
t=dsolve('D3y+0.2*D2y+0.4*Dy+0.8*y=0.5','y(0)=0','Dy(0)=0','D2y(0)=0');这里假设初值都为0;可以得到
t=5/8+(-5/24-295/40368*(1306+15*3^(1/2)*2563^(1/2))^(2/3)-15/1189232*(1306+15*3^等等(结果太长省略)命令中输入如下代码:
t=dsolve('D3y+0.2*D2y+0.4*Dy+0.8*y=0.5','y(0)=0','Dy(0)=0','D2y(0)=0');
subplot(1,2,2);
ezplot(t,[0,20]),grid
可以看到两次前两种方法绘制的曲线是相同的。
2建立数学模型方法
1)用积分器直接构造微分方程模型
把原微分方程改写成:
y’’’+0.2y’’+0.4y’+0.8y=0.5u(t)
利用simulink模块库中的基本模块建立如下系统模型:
各个模块说明如下:
(a).u(t)输入模块:
为斜坡信号;
(b).Gs增益模块分别设置为0.2,0.4,0.8,旋转可借助Format菜单中的RotateBlock命令来实现;
(c).求和模块:
其图形Iconshape选择rectangular,符号列表Listofsigns设置为+---;
(d).积分模块:
参数不变;
(e).Scope示波器:
在示波器参数窗口选择Datehistory
页,选中其中的Savedatatoworkspece复选框。
这将结果保存到工作空间默认名为ScopeData。
(f).设置系统仿真参数单击模型编辑窗口Simulation菜单中的ConfigurationParamenters选项选择Solver把仿真时间Stoptime设置为20.运行得到如下结果:
2)利用传递函数模块建模
对方程y’’’(t)+0.2y’’(t)+0.4y’(t)+0.8y(t)=0.5u(t)两边进行Laplace变换得到:
S^3y(t)+0.2S^2y(t)+0.4Sy(t)+0.8y(t)=0.5u(t)
整理得到传递函数:
G(s)=y(t)/u(t)=0.5/(s^3+0.2s^2+0.4s+0.8)
在Continuous模块库中有标准的传递函数模块调用可得如下模型:
(a).u(t)模块:
为source库中的斜坡信号;
(b).G(s)模块:
双击TranferFcn模块在分子分母栏中填
入如下所需参数:
运行仿真系统得到如下结果:
课程设计体会:
1.凡事主要靠自己,要给自己充裕的时间处理事情。
遇到问题不能把太多的希望都寄托在别人身上,也不是每次都会那么幸运,有问题的时候别人总会及时的帮你解决的,可以自己XX谷歌。
通过自己查找资料解决的问题才对自己帮助最大。
2.做课程设计需要查找许多资料对于资料,切记不要盲目的下载,一般来说,真正吃透一两本书对于了解某一方面的基础知识也就够了。
3.找一本matlab的函数工具词典,就像汉语词典一样,你要尽量多的熟悉matlab自带的函数,及其作用,因为matlab的自带函数特别多,基本上能够满足一般的数据和矩阵的计算,所以基本上不用你自己编函数.这一点对程序非常有帮助,可以使程序简单,运行效率高,可以节省很多时间.
4.SIMULINK是MATLAB软件的扩展,它是实现动态系统建模和仿真的一个软件包,它与MATLAB语言的主要区别在于,其与用户交互接口是基于Windows的模型化图形输入,其结果是使得用户可以把更多的精力投入到系统模型的构建,而非语言的编程上。
可以简单的实现一些系统仿真很方便实用。