• 沒有找到結果。

第二讲 常微分方程数值求解

N/A
N/A
Protected

Academic year: 2021

Share "第二讲 常微分方程数值求解"

Copied!
17
0
0

加載中.... (立即查看全文)

全文

(1)

第二讲

常微分方程数值求解

—— MATLAB 求解

(2)

Matlab 解初值问题函数

 用 Maltab自带函数 解初值问题

 求解析解: dsolve

 求数值解:

ode45、ode23、

ode113、ode23t、ode15s、

ode23s、ode23tb

(3)

符号求解

dsolve

符号求解

(4)

dsolve 求解析解

 求解析解: dsolve

y=dsolve('eq1','eq2', ... ,'cond1','cond2', ... ,'v')

其中 y 为输出的解, eq1、eq2、... 为方程,cond1、

cond2、... 为初值条件,v 为自变量。

例 1: 求微分方程

dy 2xy xe x2

的通解,并验证。

dx

+ =

sol=dsolve('Dy+2*x*y=x*exp(-x^2)','x') syms x

diff(sol)+2*x*sol - x*exp(-x^2) % 验证

(5)

dsolve 的使用

 几点说明

 如果省略初值条件,则表示求通解;

 如果省略自变量,则默认自变量为

t

dsolve('Dy=2*x','x'); % dy/dx = 2x dsolve('Dy=2*x'); % dy/dt = 2x

 若找不到解析解,则提出警告,并返回空解。

 微分方程中用 D 表示对 自变量 的导数,如:

Dy y'; D2y y''; D3y y'''

(6)

dsolve 的使用

 使用符号方程

 导数:diff,如 diff(y),diff(y,2)

 等号:==

必须声明应变量与自变量!

例 1: 求微分方程

dy 2xy xe x2

的通解,并验证。

dx

+ =

syms y(x)

sol=dsolve(diff(y)+2*x*y==x*exp(-x^2)) diff(y)+2*x*y - x*exp(-x^2)

(7)

dsolve 举例

例 2:

求微分方程 在初值条件

下的特解,并画出解函数的图形。

0

'

x

xy + − y e =

sol=dsolve('x*Dy+y-exp(x)=0', 'y(1)=2*exp(1)', 'x');

ezplot(sol);

1 2 ( )

y = e

syms y(x)

sol=dsolve(diff(y)*x+y-exp(x)==0, y(1)==2*exp(1));

ezplot(sol);

syms y(x)

sol=dsolve(diff(y)*x+y-exp(x)==0, y(1)==2*exp(sym(1)));

ezplot(sol);

(8)

dsolve 举例

例3:

求微分方程组 在初值条件

下的特解,并画出解函数的图形。

5

3 0 dx

t

x y e dt

dy x y

dt

 + + =

 

 − − =



[x,y]=dsolve('Dx+5*x+y=exp(t)','Dy-x-3*y=0', ...

'x(0)=1', 'y(0)=0', 't') ezplot(x,y,[0,1.3]);

0 0

1 0

|

|

t t

x y

=

=

 =

 =

注:解微分方程组时,如果所给的输出个数与方程个数相同,

则方程组的解按词典顺序输出;如果只给一个输出,则输出

(9)

dsolve 举例

例:

[x,y]=dsolve('Dx+5*x=0', 'Dy-3*y=0', ...

'x(0)=1', 'y(0)=1', 't')

sol = dsolve('Dx+5*x=0', 'Dy-3*y=0', ...

'x(0)=1', 'y(0)=1', 't')

这里返回的 sol 是一个 结构类型 的数据 sol.x % 查看解函数 x(t)

sol.y % 查看解函数 y(t)

dsolve的输出个数只能为一个或与方程个数相等

(10)

dsolve 举例

 使用符号方程

syms x(t) y(t)

sol=dsolve(diff(x)+5*x==0, diff(y)-3*y==0, ...

x(0)==1, y(0)==1)

(11)

dsolve 举例

dsolve('D2y=-a^2*y','y(0)=1','Dy(pi/a)=0')

例 4:

求微分方程

d y

22

a y

2 的特解,初值条件为

dt = −

0 1 π 0

( ) , '( / )

y = y a =

其中

a

是符号常量

syms y(t) a dy = diff(y);

sol=dsolve(diff(y,2)==-a^2*y, y(0)==1, dy(pi/a)==0)

(12)

数值求解

ode45、ode23、

ode113、ode23t、ode15s、

ode23s、ode23tb

数值求解

(13)

数值求解

[T, Y] = solver (odefun, tspan, y0)

其中 y0 为初值条件,tspan为求解区间;Matlab在数值求解 时自动对求解区间进行分割,T (列向量) 中返回的是分割点 的值(自变量),Y (数组) 中返回的是这些分割点上的近似解,

其列数等于应变量的个数。

solver

为Matlab的ODE求解器(可以是 ode45、ode23、

ode113、ode15s、ode23s、ode23t、ode23tb

没有一种算法可以有效地解决所有的 ODE 问题,因此

MATLAB 提供了多种ODE求解器,对于不同的ODE,可以 调用不同的求解器。

(14)

Matlab的ODE求解器

求解器 ODE类型 特点 说明

ode45 非刚性 单步法;4,5 阶 R-K 方法;

累计截断误差为 (△x)3

大部分场合的首选方法

ode23 非刚性 单步法;2,3 阶 R-K 方法;

累计截断误差为 (△x)3

使用于精度较低的情形

ode113 非刚性 多步法;Adams算法;高低精 度均可到 10-310-6

计算时间比 ode45

ode23t 适度刚性 采用梯形算法 适度刚性情形

ode15s 刚性 多步法;Gear’s 反向数值微 分;精度中等

ode45 失效时,可 尝试使用

ode23s 刚性 单步法;2 阶Rosebrock 算 法;低精度

当精度较低时,计算时 间比 ode15s

ode23tb 刚性 梯形算法;低精度 当精度较低时,计算时

ode15s

(15)

参数说明

odefun 为函数句柄,代表显式常微分方程,可以通过匿名

函数定义,或在函数文件中定义,然后通过函数句柄调用。

f = @(x,y) -2*y+2*x^2+2*x;

[x,y] = ode45(f, [0,0.5],1);

注:也可以在 tspan 中指定对求解区间的分割,如:

[x,y] = ode45(f, [0:0.1:0.5],1); % x=[0:0.1:0.5]

[T, Y] = solver (odefun,tspan,y0)

的数值解,求解区间为 [0,0.5]

2 2 2 2

(0) 1

dy y x x

dx y

 = − + +



 =

例 :

(16)

数值求解举例

如果需求解的问题是高阶常微分方程,则需将其化为一阶常 微分方程组,此时必须用函数文件来定义该常微分方程组。

1

2

2 2

1 2 1

(1 )

7 dx x

dt

dx x x x

dt

µ µ

 =



 = − −



 = 令 1

2

x y x dy

dt

 =

 =



求解 Ver der Pol 初值问题

2

2

2 (1 ) 0

7, (0) 1, '(0) 0

d y dy

y y

dt dt

y y

µ µ

 − − + =



 = = =

例 :

(17)

数值求解举例

 先编写函数文件 verderpol.m

function dx=verderpol(t,x) % 必须是两个输入和一个输出 global mu; % 其它参数只能通过全局变量传递

dx=[x(2); mu*(1-x(1)^2)*x(2) - x(1)]; % 必须是列向量

 然后编写脚本文件 vanderpol_main.m clear;

global mu;

mu=7;

y0=[1; 0];

[t,x] = ode45(@verderpol, [0,40], y0);

plot(t, x(:,1));

參考文獻

相關文件

多项式 求值函数 :polyval( ) 调用格式: y=polyval(p,x). 说明: y=polyval(p,x)为返回对应自变量x 在 给定系数p

本来这章计划要覆盖所有大家学过的存在性、唯一性、延拓定理、稳定性等知识的,

给定一个 维空间 和一组向量 ,要使向量组 能够成为 维空间 的充要条件是:在 维空间 中,任意一个向量都可以表示为向量组

基向量数量为3,但是其中有的向量的维度不等于3,即可能

从结果不难看出,该方程是一个欠定方程组,其秩=3<未知

在微積分教材中, Rolle 均值定理, Lagrange 均值定理與 Cauchy 均值定理又 (統) 稱為 微分學基本定理、 有限增量定理或有限改變量定理, 是微分學的基本定理之一,

对于二元函数的自变量,我

《数值分析》19 主要内容: Simpson公式的精度和复合型 圆周长计算外推方法(引例) 复合梯形公式外推方法 Gauss型数值积分公式... Gauss型数值积分公式 定义 如果求积结点x0, x1,···,xn,使插值型求积公式