常微分方程的求解 实验六

更新时间:2023-10-05 05:37:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《数学实验》报告

实验名称 常微分方程的求解 学 院 专业班级 姓 名 学 号

2013年5月

一、 【实验目的】

1. 学习在MATLAB中如何求解微分方程的方法;

2. 掌握基本的微分求解命令,学会结合学过的基础知识求解方程; 3. 熟练运用基本的解法即数值解法解微分方程; 4. 注意不同方法下求得微分方程的优缺点。

二、 【实验任务】

xsinxy?1. 求解微分方程为cosy。

''y2. 用数值方法求解下列微分方程,用不同颜色和线形将y和画在同一个

图形窗口里:

y?ty?y?1?2t初始时间:t0=0;终止时间:tf

三、 【实验程序】 1.

y=dsolve('Dy=x*sinx/cosy','x') 2.

定义的程序:

function xdot=exf(t,x)

xdot=[0 1;1 -t]*x+[0;1]*(1-2*t);

主程序:

2

'''

=?;初始条件:y|t?0?0.1 y'|t?0?0.2。

clc clf

[t,x]=ode23('exf',[0,pi],[0.1;0.2]); y=x(:,1) dy=x(:,2)

plot(t,y,'r',t,dy,'b')

【实验结果】 1.

'''''x=y,x=y=x?y=x2.先将高阶微分方程转化为一阶微分方程。令1212,

即原微分方程转化为:

3

??x?x2?' x?x?tx+1?2t??212

写成矩阵形式为:

'???01??x1??0?x1'x??'?=???+?(?1-2t)?x??1?t???x2??1??2? ?01??0? =??x+?(?1-2t)?1?t??1?'1?01??0?xdot???x+?(?1-2t)放入函数exf.m中,命令如下:1?t1????[t,x]=ode23('exf',[0,pi],[0.1;0.2])其中[t,x]中求出的x是按列排列,故用ode23求出x后只要第一列,即为y。 1) 将导数表达式的右端写成exf.m函数文件:

function xdot=exf(t,x)

xdot=[0 1;1 -t]*x+[0;1]*(1-2*t); 2) 主程序如下:

clc clf

[t,x]=ode23('exf',[0,pi],[0.1;0.2]); y=x(:,1) dy=x(:,2)

plot(t,y,'r',t,dy,'b')

4

3) 运行结果如图:

三、 【实验总结】

1. 对于高阶常微分方程,需要先将它转化为一阶常微分方程组,即状态方程,所以求解常微分方程时,需要先用学过的知识对方程进行降阶处理; 2. 运用数值解法求解微分方程时需要建立模型的函数文件,然后运用MATLAB中函数调用的知识在主程序中调用子程序,最终解出微分方程的解;

3. 微分方程有数值积分解也有解析解,两者有各自优缺点,不同的求解方法

5

适用于不同的场合,具体方程可以将两者互相对比,画出对比的图形; 4. 求解常微分方程的一般步骤:改写原方程为矩阵形式?建立模型函数文件?解微分方程?用图形显示。

6

本文来源:https://www.bwwdw.com/article/p38d.html

Top