当前位置: 首页 > >

数学建模实验报告求微分方程的解

发布时间:

求微分方程的解
一、实验目的及意义
1. 归纳和学*求解常微分方程(组)的基本原理和方法; 2. 掌握解析、数值解法,并学会用图形观察解的形态和进行解的定性分析; 3. 熟悉 MATLAB 软件关于微分方程求解的各种命令。

二、实验内容
1. 2. 3. 4. 微分方程及方程组的解析求解法; 微分方程及方程组的数值求解法——欧拉、欧拉改进算法; 直接使用 MATLAB 命令对微分方程(组)进行求解(包括解析解、数值解); 利用图形对解的特征作定性分析。

三、实验步骤
1. 2. 3. 4. 5. 开启软件*台——MATLAB,开启 MATLAB 编辑窗口; 根据微分方程求解步骤编写 M 文件 保存文件并运行; 观察运行结果(数值或图形); 根据观察到的结果和体会写出实验报告。

四、实验要求与任务 根据实验内容和步骤,完成以下实验,要求写出实验报告 1. 求微分方程 ( x 2 ? 1) y '+2 xy ? sin x = 0 的通解. 2. 求微分方程 y ' '?2 y '+5 y = e x sin x 的通解. 3. 求微分方程组 ? dx ? dt + x + y = 0 ? ? ? dy + x ? y = 0 ? dt ? 在初始条件 x | t =0 = 1, y |t =0 = 0 下的特解,并画出解函数 y = f ( x ) 的图形.
4. 分别用 ode23、ode45 求上述第 3 题中的微分方程初值问题的数值解(*似

解),求解区间为 t ∈ [0,2] .利用画图来比较两种求解器之间的差异.
5. 用 Euler 折线法求解微分方程初值问题

wilyes11 收集 博客(与学*无关):http://blog.sina.com.cn/u/1810231802

? 12 x 2 ? y' = y ? 3 , y ? ? y (0) = 1 ?
的数值解(步长 h 取 0.1),求解范围为区间[0,2]. 6. 用四阶 Runge-Kutta 法求解微分方程初值问题

? y ' = y ? e x cos x, ? ? y (0) = 1
的数值解(步长 h 取 0.1),求解范围为区间[0,3]. 五. 程序代码及运行结果(经调试后正确的源程序) 程序代码及运行结果(经调试后 正确的源程序) 1. 求微分方程 ( x 2 ? 1) y '+2 xy ? sin x = 0 的通解. 程序代码: syms x y fprintf('通解为') y=dsolve('(x^2-1)*Dy+2*x*y-sin(x)=0','x') 运行结果: 通解为 y = (-cos(x)+C1)/(x^2-1) 2. 求微分方程 y ' '?2 y '+5 y = e x sin x 的通解. 程序代码: syms x y fprintf('通解为') y=dsolve('D2y-2*Dy+5*y=exp(x)*sin(x)','x') 运行结果: 通解为 y = -1/4*exp(x)*cos(2*x)*sin(x)+1/12*exp(x)*cos(2*x)*sin(3*x)-1/12*exp(x) *sin(2*x)*cos(3*x)+1/4*exp(x)*sin(2*x)*cos(x)+C1*exp(x)*cos(2*x)+C2*e xp(x)*sin(2*x) 3. 求微分方程组

wilyes11 收集 博客(与学*无关):http://blog.sina.com.cn/u/1810231802

? dx ? dt + x + y = 0 ? ? ? dy + x ? y = 0 ? dt ? 在初始条件 x | t =0 = 1, y |t =0 = 0 下的特解,并画出解函数 y = f ( x ) 的图形. 程序代码: syms x y t [x,y]=dsolve('Dx+x+y=0','Dy+x-y=0','x(0)=1','y(0)=0','t') ezplot(x,y,[0,2]); 运行结果: x = 1/2*exp(2^(1/2)*t)+1/4*2^(1/2)*exp(-2^(1/2)*t)-1/4*2^(1/2)*exp(2^ (1/2)*t)+1/2*exp(-2^(1/2)*t) y = 1/4*2^(1/2)*exp(-2^(1/2)*t)-1/4*2^(1/2)*exp(2^(1/2)*t)
x = 1/2 exp(21/2 t)+...+1/2 exp(-21/2 t), y = 1/4 21/2 exp(-21/2 t)-1/4 21/2 exp(21/2 t) 0 -0.5 -1 -1.5 -2 -2.5 -3 -3.5 -4 -4.5 -5 -5.5 y

-2

-1

0

1 x

2

3

4

5

4. 分别用 ode23、ode45 求上述第 3 题中的微分方程初值问题的数值解(*似

解),求解区间为 t ∈ [0,2] .利用画图来比较两种求解器之间的差异.

wilyes11 收集 博客(与学*无关):http://blog.sina.com.cn/u/1810231802

程序代码: M 函数文件 verderpol.m: function xprime=verderpol(t,x) xprime=[-x(1)-x(2); x(2)-x(1)]; 在程序中调用此函数: clear; y0=[1;0]; [t,x]=ode45('verderpol',[0,2],y0); plot(x(:,1),x(:,2),'r-'); hold on clear; y0=[1;0]; [t,x]=ode23('verderpol',[0,2],y0); plot(x(:,1),x(:,2),'b-'); 运行结果:

0

-1

-2

-3

-4

-5

-6 0.6

0.8

1

1.2

1.4

1.6

1.8

2

2.2

2.4

2.6

5. 用 Euler 折线法求解微分方程初值问题

? 12 x 2 y' = y ? 3 , ? y ? ? y (0) = 1 ?
的数值解(步长 h 取 0.1),求解范围为区间[0,2]. 程序代码: clear
wilyes11 收集 博客(与学*无关):http://blog.sina.com.cn/u/1810231802

f=sym('y-(12*x^2)/y^3'); a=0; b=2; h=0.1; n=(b-a)/h+1; x=0; y=1; szj=[x,y]; for i=1:n-1 y=y+h*subs(f,{'x','y'},{x,y}); x=x+h; szj=[szj;x,y]; end szj plot(szj(:,1),szj(:,2),'or-') 运行结果: szj = 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000 1.8000 1.9000 2.0000

1.0000 1.1000 1.2010 1.2934 1.3728 1.4359 1.4781 1.4921 1.4644 1.3662 1.1217 0.3836 -25.3054 -27.8358 -30.6193 -33.6812 -37.0492 -40.7541 -44.8294 -49.3123 -54.2435

wilyes11 收集 博客(与学*无关):http://blog.sina.com.cn/u/1810231802

10

0

-10

-20

-30

-40

-50

-60

0

0.5

1

1.5

2

2.5

6. 用四阶 Runge-Kutta 法求解微分方程初值问题

? y ' = y ? e x cos x, ? ? y (0) = 1
的数值解(步长 h 取 0.1),求解范围为区间[0,3]. 程序代码: clear; f=sym('y-exp(x)*cos(x)'); a=0; b=3; h=0.1; n=(b-a)/h+1; x=0; y=1; szj=[x,y]; for i=1:n-1 l1=subs(f,{'x','y'},{x,y}); l2=subs(f,{'x','y'},{x+h/2,y+l1*h/2}); l3=subs(f,{'x','y'},{x+h/2,y+l2*h/2}); l4=subs(f,{'x','y'},{x+h,y+l3*h}); y=y+h*(l1+2*l2+2*l3+l4)/6; x=x+h; szj=[szj;x,y]; end
wilyes11 收集 博客(与学*无关):http://blog.sina.com.cn/u/1810231802

szj plot(szj(:,1),szj(:,2), 'dg-') 运行结果: szj = 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000 1.8000 1.9000 2.0000 2.1000 2.2000 2.3000 2.4000 2.5000 2.6000 2.7000 2.8000 2.9000 3.0000

1.0000 0.9948 0.9787 0.9509 0.9109 0.8583 0.7933 0.7165 0.6290 0.5329 0.4309 0.3268 0.2256 0.1337 0.0590 0.0112 0.0021 0.0456 0.1582 0.3590 0.6702 1.1171 1.7283 2.5364 3.5774 4.8916 6.5231 8.5204 10.9359 13.8260 17.2510

wilyes11 收集 博客(与学*无关):http://blog.sina.com.cn/u/1810231802

18

16

14

12

10

8

6

4

2

0

0

0.5

1

1.5

2

2.5

3

3.5

六.实验总结 本次实验的目的是归纳和学*求解常微分方程(组)的基本原理和方法; 掌握 解析、 数值解法, 并学会用图形观察解的形态和进行解的定性分析; 熟悉 MATLAB 软件关于微分方程求解的各种命令。实验中,我们了解和熟悉了微分方程及方程 组的解析求解法;微分方程及方程组的数值求解法——欧拉、欧拉改进算法;直 接使用 MATLAB 命令对微分方程(组)进行求解(包括解析解、数值解)以及利用图 形对解的特征作定性分析。经过多次 MATLAB 实验,对 MATLAB 的语法也越来越熟 悉,对相关的数学思想也有了更多了解。
学生签名: 年 月 日

七.教师评语及成绩

教师签名: 年 月 日

wilyes11 收集 博客(与学*无关):http://blog.sina.com.cn/u/1810231802




友情链接: