当前位置:文档之家› 数值积分与微分方程

数值积分与微分方程

数值积分与微分方程
数值积分与微分方程

2.3 数值积分

2.3.1 一元函数的数值积分

函数1 quad 、quadl 、quad8

功能 数值定积分,自适应Simpleson 积分法。

格式 q = quad(fun,a,b) %近似地从a 到b 计算函数fun 的数值积分,误差为10-6。

若给fun 输入向量x ,应返回向量y ,即fun 是一单值函数。

q = quad(fun,a,b,tol) %用指定的绝对误差tol 代替缺省误差。tol 越大,函数计

算的次数越少,速度越快,但结果精度变小。

q = quad(fun,a,b,tol,trace,p1,p2,…) %将可选参数p1,p2,…等传递给函数

fun(x,p1,p2,…),再作数值积分。若tol=[]或trace=[],则用缺省值进行计算。

[q,n] = quad(fun,a,b,…) %同时返回函数计算的次数n

… = quadl(fun,a,b,…) %用高精度进行计算,效率可能比quad 更好。 … = quad8(fun,a,b,…) %该命令是将废弃的命令,用quadl 代替。 例2-40

>>fun = inline(‘3*x.^2./(x.^3-2*x.^2+3)’); equivalent to: function y=funn(x)

y=3*x.^2./(x.^3-2*x.^2+3);

>>Q1 = quad(fun,0,2) >>Q2 = quadl(fun,0,2)

计算结果为:

Q1 =

3.7224 Q2 =

3.7224

补充:复化simpson 积分法程序

程序名称 Simpson.m

调用格式 I=Simpson('f_name',a,b,n)

程序功能 用复化Simpson 公式求定积分值

输入变量 f_name 为用户自己编写给定函数()y f x 的M 函数而命名的程序文件名 a 为积分下限

b 为积分上限

n 为积分区间[,]a b 划分成小区间的等份数 输出变量 I 为定积分值 程序

function I=simpson(f_name,a,b,n) h=(b-a)/n; x=a+(0:n)*h; f=feval(f_name,x);

N=length(f)-1; if N==1

fprintf('Data has only one interval') return; end if N==2

I=h/3*(f(1)+4*f(2)+f(3)); return; end if N==3

I=3/8*h*(f(1)+3*f(2)+3*f(3)+f(4)); return; end I=0;

if 2*floor(N/2)==N

I=h/3*(2*f(N-2)+2*f(N-1)+4*f(N)+f(N+1)); m=N-3; else m=N; end

I=I+(h/3)*(f(1)+4*sum(f(2:2:m))+2*f(m+1)); if m>2

I=I+(h/3)*2*sum(f(3:2:m)); end

例题 求0

sin I xdx π

=

?

解 先编制sin y x =的M 函数。程序文件命名为sin_x.m 。

function y=sin_x(x) y=sin(x)

将区间4等份,调用格式为

I=Simpson (’sin _x’,0,pi,4)

计算结果为

y =

0 0.7071 1.0000 0.7071 0.0000

I =

2.0046

将区间20等份,调用格式为

I=Simpson (’sin _x’,0,pi,20)

计算结果为

y =

0 0.1564 0.3090 0.4540 0.5878 0.7071 0.8090

0.8910 0.9511 0.9877 1.0000 0.9877 0.9511 0.8910 0.8090 0.7071 0.5878 0.4540 0.3090 0.1564 0.0000

I =

2.0000

重做上例2—40:simpson('funn',0,2,100)

函数2 trapz

功能 梯形法数值积分

格式 T = trapz(Y) %用等距梯形法近似计算Y 的积分。若Y 是一向量,则trapz(Y)

为Y 的积分;若Y 是一矩阵,则trapz(Y)为Y 的每一列的积分;若Y 是一多维阵列,则trapz(Y)沿着Y 的第一个非单元集的方向进行计算。

T = trapz(X,Y) %用梯形法计算Y 在X 点上的积分。若X 为一列向量,Y 为

矩阵,且size(Y,1) = length(X),则trapz(X,Y)通过Y 的第一个非单元集方向进行计算。

T = trapz (…,dim) %沿着dim 指定的方向对Y 进行积分。若参量中包含X ,则

应有length(X)=size(Y ,dim)。

例2-41

>>X = -1:.1:1;

>>Y = 1./(1+25*X.^2); >>T = trapz(X,Y)

计算结果为:

T =

0.5492

补充: 复化梯形积分法程序

程序名称 Trapezd.m

调用格式 I=Trapezd('f_name',a,b,n) 程序功能 用复化梯形公式求定积分值

输入变量 f_name 为用户自己编写给定函数()y f x 的M 函数而命名的程序文件名 a 为积分下限

b 为积分上限

n 为积分区间[,]a b 划分成小区间的等份数 输出变量 I 为定积分值 程序

function I=Trapezd(f_name,a,b,n)

h=(b-a)/n; x=a+(0:n)*h; f=feval(f_name,x);

I=h*(sum(f)-(f(1)+f(length(f)))/2); hc=(b-a)/100; xc=a+(0:100)*hc; fc=feval(f_name,xc); plot(xc,fc,'r');

hold on ;

title('Trapezoidal Rule');xlabel('x');ylabel('y'); plot(x,f);

plot(x,zeros(size(x))) ; for i=1:n;

plot([x(i),x(i)],[0,f(i)]); end

补充例题 求0

sin I xdx π

=

?

解 先编制sin y x =的M 函数。程序文件命名为sin_x.m 。

function y=sin_x(x) y=sin(x);

将区间4等份,调用格式为

I=Trapezd(’sin _x’,0,pi,4)

计算结果为

I=1.8961

将区间20等份,调用格式为

I=Trapezd(’sin _x’,0,pi,20)

计算结果为

I= 1.9959

图A.5表示了复化梯形求积的过程。

(1)区间4等份(2)区间20等份

重做上例2-41:

function y=li2_41(x)

y = 1./(1+25*x.^2);

I=Trapezd(’li2_41’,-1,1,100)

函数3 rat,rats

功能有理分式近似。虽然所有的浮点数值都是有理数,有时用简单的有理数字(分子与分母都是较小的整数)近似地表示它们是有必要的。函数rat将试图做到这一点。对于有连续出现的小数的数值,将会用有理式近似表示它们。函数rats调用函数rat,且返回字符串。

格式[N,D] = rat(X) %对于缺省的误差1.e-6*norm(X(:),1),返回阵列N与D,

使N./D近似为X。

[N,D] = rat(X,tol) %在指定的误差tol范围内,返回阵列N与D,使N./D近

似为X。

rat(X)、rat(X…) %在没有输出参量时,简单地显示x的连续分数。

S = rats(X,strlen) %返回一包含简单形式的、X中每一元素的有理近似字符

串S,若对于分配的空间中不能显示某一元素,则用星号

表示。该元素与X中其他元素进行比较而言较小,但并

非是可以忽略。参量strlen为函数rats中返回的字符串元

素的长度。缺省值为strlen=13,这允许在78个空格中有

6个元素。

S = rats(X) %返回与用MA TLAB命令format rat显示 X相同的结果给S。

例2-42

>>s = 1-1/2+1/3-1/4+1/5-1/6+1/7

>>format rat

>>S1 = rats(s)

>>S2 = rat(s)

>>[n,d] = rat(s)

>>PI1 = rats(pi)

>>PI2 = rat(pi)

计算结果为:

s =

0.7595

S1 =

319/420

S2 =

1 + 1/(-4 + 1/(-6 + 1/(-3 + 1/(-5))))

n =

319

d =

420

PI1 =

355/113

PI2 =

3 + 1/(7 + 1/(16))

2.3.2 二元函数重积分的数值计算

函数1 dblquad

功能矩形区域上的二重积分的数值计算

格式q = dblquad(fun,xmin,xmax,ymin,ymax) %调用函数quad在区域[xmin,xmax, ymin,ymax]上计算二元函数z=f(x,y)的二重积分。输入向量x,标量y,则f(x,y)

必须返回一用于积分的向量。

q = dblquad(fun,xmin,xmax,ymin,ymax,tol) %用指定的精度tol代替缺省精度10-6,再进行计算。

q = dblquad(fun,xmin,xmax,ymin,ymax,tol,method) %用指定的算法method代替缺省算法quad。method的取值有@quadl或用户指定的、与命令quad与quadl

有相同调用次序的函数句柄。

q = dblquad(fun,xmin,xmax,ymin,ymax,tol,method,p1,p2,…) %将可选参数p1,p2,..等传递给函数fun(x,y,p1,p2,…)。若tol=[],method=[],则使用缺省精

度和算法quad。

例2-43

>>fun = inline(’y./sin(x)+x.*exp(y)’);

>>Q = dblquad(fun,1,3,5,7)

计算结果为:

Q =

3.8319e+003

2.4 常微分方程数值解

函数ode45、ode23、ode113、ode15s、ode23s、ode23t、ode23tb

功能常微分方程(ODE)组初值问题的数值解

参数说明:

solver为命令ode45、ode23,ode113,ode15s,ode23s,ode23t,ode23tb之一。

Odefun 为显式常微分方程y’=f(t,y),或为包含一混合矩阵的方程M(t,y)*y’=f(t,y)。命令ode23只能求解常数混合矩阵的问题;命令ode23t与ode15s可以求解奇异矩

阵的问题。

Tspan 积分区间(即求解区间)的向量tspan=[t0,tf]。要获得问题在其他指定时间点t0,t1,t2,…上的解,则令tspan=[t0,t1,t2,…,tf](要求是单调的)。

Y0 包含初始条件的向量。

Options 用命令odeset设置的可选积分参数。

P1,p2,… 传递给函数odefun的可选参数。

格式[T,Y] = solver(odefun,tspan,y0) %在区间tspan=[t0,tf]上,从t0到tf,用初始条件y0求解显式微分方程y’=f(t,y)。对于标量t与列向量y,函数f=odefun(t,y)

必须返回一f(t,y)的列向量f。解矩阵Y中的每一行对应于返回的时间列

向量T中的一个时间点。要获得问题在其他指定时间点t0,t1,t2,…上的解,

则令tspan=[t0,t1,t2,…,tf](要求是单调的)。

[T,Y] = solver(odefun,tspan,y0,options) %用参数options(用命令odeset生成)设置的属性(代替了缺省的积分参数),再进行操作。常用的属性包括相

对误差值RelTol(缺省值为1e-3)与绝对误差向量AbsTol(缺省值为每

一元素为1e-6)。

[T,Y] =solver(odefun,tspan,y0,options,p1,p2…) 将参数p1,p2,p3,..等传递给函数odefun,再进行计算。若没有参数设置,则令options=[]。

1.求解具体ODE的基本过程:

(1)根据问题所属学科中的规律、定律、公式,用微分方程与初始条件进行描述。

F(y,y’,y’’,…,y (n),t) = 0

y(0)=y 0,y’(0)=y 1,…,y (n-1)(0)=y n-1

而y=[y;y(1);y(2);…,y(m-1)],n 与m 可以不等

(2)运用数学中的变量替换:y n =y (n-1),y n-1=y (n-2),…,y 2=y 1=y ,把高阶(大于2阶)的方

程(组)写成一阶微分方程组:?????????

???=??????

????????'''=')y ,t (f )y ,t (f )y ,t (f y y y y n 21n 21

,????????????=????????????=n 10n 210y y y )0(y )0(y )0(y y (3)根据(1)与(2)的结果,编写能计算导数的M-函数文件odefile 。

(4)将文件odefile 与初始条件传递给求解器Solver 中的一个,运行后就可得到ODE 的、在指定时间区间上的解列向量y (其中包含y 及不同阶的导数)。

2.求解器Solver 与方程组的关系表见表2-3。

表2-3

3.因为没有一种算法可以有效地解决所有的ODE 问题,为此,MA TLAB 提供了多种求解器Solver ,对于不同的ODE

问题,采用不同的Solver 。

表2-4 不同求解器Solver 的特点

差、相对误差、步长等)。

表2-5 Solver 中options 的属性

注意:

(1)求微分方程数值解的函数命令中,函数odefun 必须以dx/dt 为输出量,以t,x 为输入量。

(2)用于解n 个未知函数的方程组时,M 函数文件中的待解方程组应以x 的向量形式写成。

例题A.7 解微分方程sin y x '=,其中000,1x y ==- 首先,将导数表达式的右端编写成一个liA7.m 函数程序:

function yy=liA7(x,y) yy=sin(x);

然后直接调用:[x,y]=ode23('liA7',[0,pi],-1) plot(x,y)

例4.用微分方程的数值解法求解微分方程π

212

t y y -=+'',设自变量t 的初始值为0,

终值为3pi,初始条件y(0)=0,y ’(0)=0

解:将高阶微分方程化为一阶微分方程组,即用变量代换:

???

? ??'=???? ??=y y x x x 21 ????

? ?

?-

+-=???? ??'''=???? ??''='π212

1221t x x y y x x x =)21(100110221

πt x x -????

??+???? ?????? ??- 这样,将导数表达式的右端编写成一个exf.m 函数程序

function xdot=exf(t,x) u=1-(t.^2)/(2*pi);

xdot=[0 1;-1 0]*x+[0 1]'*u;

然后,在主程序中调用已有的数值积分函数进行积分:

clf;t0=0;tf=3*pi;x0=[0;0] [t,x]=ode23('exf',[t0,tf],x0) y=x(:,1)

例5,求二阶微分方程π

ππ2

)

2(,2)2(,0)2

1(2

2-

='==-+'+''y y y x y x y x 的数值解

解:首先变量代换:???

?

??'=???? ??=y y z z z 21 ???

? ??-+-=???? ??''='122

221)121(z x x z z z z z 这样,将导数表达式的右端编写成一个jie3.m 函数程序

function f=jie3(x,z) f=[0 1;1/(2*x^2)-1 -1/x]*z;

然后,在主程序中调用已有的数值积分函数进行积分: [x,z]=ode23('jie3',[pi/2,pi],[2;-2/pi]) plot(x,z(:,1))

例2-45 求解描述振荡器的经典的Ver der Pol 微分方程0)1(222=+--y dt

dy y dt y d μ y(0)=1,y’(0)=0

令x1=y ,x2=dy/dt ,则 dx1/dt = x2

dx2/dt = μ(1-(x1)^2)*x2-x1

编写函数文件verderpol.m :

function xprime = verderpol(t,x) global MU

xprime = [x(2);MU*(1-x(1)^2)*x(2)-x(1)];

再在命令窗口中执行:

>>global MU >>MU = 7; >>Y0=[1;0]

>>[t,x] = ode45(‘verderpol’,0,40,Y0); >>x1=x(:,1);x2=x(:,2); >>plot(t,x1,t,x2)

图形结果为图2-20。

图2-20 Ver der Pol 微分方程图

A.4.1 改进的Euler 法程序

程序名称 Eulerpro.m

调用格式 [X,Y]=Eulerpro('fxy',x0,y0, xend ,h) 程序功能

解常微分方程

输入变量 fxy 为用户编写给定函数(,)y f x y '=的M 函数文件名 x0,xend 为起点和终点 y0为已知初始值 h 为步长

输出变量 X 为离散的自变量 Y 为离散的函数值 程序

function[x,y]=Eulerpro(fxy,x0,y0, xend, h) n=fix((xend-x0)/h); y(1)=y0; x(1)=x0; for k=2:n x(k)=0; y(k)=0; end for i=1:(n-1) x(i+1)=x0+i*h;

y1=y(i)+h*feval(fxy,x(i),y(i)); y2=y(i)+h*feval(fxy,x(i+1),y1); y(i+1)=(y1+y2)/2; end plot(x,y)

例题A.7 解微分方程sin y x '=,其中000,1x y ==-。 解 先编制sin y x '=的M 函数。程序文件命名为fxy.m 。

function Z=fxy(x,y) Z=sin(x);

取步长0.1,调用格式为

[X,Y]=Eulerpro(‘fxy’,0,-1, pi ,0.1)

计算结果如图A.6所示。

图 A.6 微分方程求解结果

x =

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 y =

-1.0000 -0.9950 -0.9801 -0.9554 -0.9211 -0.8777 -0.8255 -0.7650 -0.6970 -0.6219 -0.5407 -0.4541 -0.3629 -0.2681 -0.1707 -0.0715 0.0283 0.1279 0.2262 0.3222 0.4150 0.5036 0.5872 0.6649 0.7359 0.7996 0.8553 0.9025 0.9406 0.9693 0.9883

A.4.2 Runge-Kutta 法程序

程序名称 RungKt4.m

调用格式 [X,Y]=RungKt4('fxy',x0,y0,xend,M) 程序功能

解常微分方程

输入变量 fxy 为用户编写给定函数(,)y f x y '=的M 函数文件名 x0,xend 为起点和终点 y0为已知初始值 M 为步长数

输出变量 X 为离散的自变量 Y 为离散的函数值 程序

function [X,Y]=Rungkt4(fxy,x0,y0,xend,M) h=(xend-x0)/M; X=zeros(1,M+1); Y=zeros(1,M+1); X=x0:h:xend; Y(1)=y0; for i=1:M

k1=h*feval(fxy,X(i),Y(i));

k2=h*feval(fxy,X(i)+h/2,Y(i)+k1/2); k3=h*feval(fxy,X(i)+h/2,Y(i)+k2/2); k4=h*feval(fxy,X(i)+h,Y(i)+k3); Y(i+1)=Y(i)+(k1+2*k2+2*k3+k4)/6;

end plot(X,Y)

例题A.8 解微分方程sin y x '=,其中000,1x y ==-。 解 先编制sin y x '=的M 函数。文件名取为fxy.m 。

function Z=fxy(x,y) Z=sin(x);

取步长数为30,调用格式为

[X,Y]= Rungkt4('fxy',0,-1,pi,30)

计算结果如图A.7所示。 X =

0 0.1047 0.2094 0.3142 0.4189 0.5236 0.6283 0.7330 0.8378 0.9425 1.0472 1.1519 1.2566 1.3614 1.4661 1.5708 1.6755 1.7802 1.8850 1.9897 2.0944 2.1991 2.3038 2.4086 2.5133 2.6180 2.7227 2.8274 2.9322 3.0369 3.1416

图 A.7 微分方程的求解过程

Y =

-1.0000 -0.9945 -0.9781 -0.9511 -0.9135 -0.8660 -0.8090 -0.7431 -0.6691 -0.5878 -0.5000 -0.4067 -0.3090 -0.2079 -0.1045 0.0000 0.1045 0.2079 0.3090 0.4067 0.5000 0.5878 0.6691 0.7431 0.8090 0.8660 0.9135 0.9511 0.9781 0.9945 1.0000

常微分方程边值问题的数值解法

第8章 常微分方程边值问题的数值解法 引 言 第7章介绍了求解常微分方程初值问题的常用的数值方法;本章将介绍常微分方程的边值问题的数值方法。 只含边界条件(boundary-value condition)作为定解条件的常微分方程求解问题称为常微分方程的边值问题(boundary-value problem). 为简明起见,我们以二阶边值问题为 则边值问题(8.1.1)有唯一解。 推论 若线性边值问题 ()()()()()(),, (),()y x p x y x q x y x f x a x b y a y b αβ'''=++≤≤?? ==? (8.1.2) 满足 (1) (),()p x q x 和()f x 在[,]a b 上连续; (2) 在[,]a b 上, ()0q x >, 则边值问题(8.1.1)有唯一解。 求边值问题的近似解,有三类基本方法: (1) 差分法(difference method),也就是用差商代替微分方程及边界条件中的导数,最终化为代数方程求解; (2) 有限元法(finite element method);

(3) 把边值问题转化为初值问题,然后用求初值问题的方法求解。 差分法 8.2.1 一类特殊类型二阶线性常微分方程的边值问题的差分法 设二阶线性常微分方程的边值问题为 (8.2.1)(8.2.2) ()()()(),,(),(), y x q x y x f x a x b y a y b αβ''-=<

微分方程数值解法

《微分方程数值解法》 【摘要】自然界与工程技术中的很多现象,可以归结为微分方程定解问题。其中,常微分方程求解是微分方程的重要基础内容。但是,对于许多的微分方程,往往很难得到甚至不存在精确的解析表达式,这时候,数值解提供了一个很好的解决思路。,针对于此,本文对常微分方程数值解法进行了简单研究,主要讨论了一些常用的数值解法,如欧拉法、改进的欧拉法、Runge —Kutta 方法、Adams 预估校正法以及勒让德谱方法等,通过具体的算例,结合MA TLAB 求解画图,初步给出了一般常微分方程数值解法的求解过程。同时,通过对各种方法的误差分析,让大家对各种方法的特点和适用范围有一个直观的感受。 【关键词】 常微分方程 数值解法 MA TLAB 误差分析 引言 在我国高校,《微分方程数值解法》作为对数学基础知识要求较高且应用非常广泛的一门课程,不仅 在数学专业,其他的理工科专业的本科及研究生教育中开设这门课程.近四十年来,《微分方程数值解法》不论在理论上还是在方法上都获得了很大的发展.同时,由于微分方程是描述物理、化学和生物现象的数学模型基础,且它的一些最新应用已经扩展到经济、金融预测、图像处理及其他领域 在实际应用中,通过相应的微分方程模型解决具体问题,采用数值方法求得方程的近似解,使具体问题迎刃而解。 2 欧拉法和改进的欧拉法 2.1 欧拉法 2.1.1 欧拉法介绍 首先,我们考虑如下的一阶常微分方程初值问题 ???==0 0)() ,('y x y y x f y (2--1) 事实上,对于更复杂的常微分方程组或者高阶常微分方程,只需要将x 看做向量,(2--1)就成了一个一阶常微分方程组,而高阶常微分方程也可以通过降阶化成一个一阶常微分方程组。 欧拉方法是解常微分方程初值问题最简单最古老的一种数值方法,其基本思路就是把(2--1)中的导数项'y 用差商逼近,从而将一个微分方程转化为一个代数方程,以便求解。 设在[]b a ,中取等距节点h ,因为在节点n x 点上,由(2--1)可得:

一阶常微分方程解法总结

第 一 章 一阶微分方程的解法的小结 ⑴、可分离变量的方程: ①、形如 )()(y g x f dx dy = 当0)(≠y g 时,得到 dx x f y g dy )() (=,两边积分即可得到结果; 当0)(0=ηg 时,则0)(η=x y 也是方程的解。 例1.1、 xy dx dy = 解:当0≠y 时,有 xdx y dy =,两边积分得到)(2ln 2为常数C C x y += 所以)(112 12 C x e C C e C y ±==为非零常数且 0=y 显然是原方程的解; 综上所述,原方程的解为)(12 12 为常数C e C y x = ②、形如0)()()()(=+dy y Q x P dx y N x M 当0)()(≠y N x P 时,可有 dy y N y Q dx x P x M ) () ()()(=,两边积分可得结果; 当0)(0=y N 时,0y y =为原方程的解,当0(0=) x P 时,0x x =为原方程的解。 例1.2、0)1()1(2 2 =-+-dy x y dx y x 解:当0)1)(1(2 2 ≠--y x 时,有 dx x x dy y y 1 122-=-两边积分得到 )0(ln 1ln 1ln 22≠=-+-C C y x ,所以有)0()1)(1(22≠=--C C y x ; 当0)1)(1(2 2 =--y x 时,也是原方程的解; 综上所述,原方程的解为)()1)(1(2 2 为常数C C y x =--。 ⑵可化为变量可分离方程的方程: ①、形如 )(x y g dx dy = 解法:令x y u =,则udx xdu dy +=,代入得到)(u g u dx du x =+为变量可分离方程,得到

常微分方程解题方法总结.doc

常微分方程解题方法总结 来源:文都教育 复习过半, 课本上的知识点相信大部分考生已经学习过一遍 . 接下来, 如何将零散的知 识点有机地结合起来, 而不容易遗忘是大多数考生面临的问题 . 为了加强记忆, 使知识自成 体系,建议将知识点进行分类系统总结 . 著名数学家华罗庚的读书方法值得借鉴, 他强调读 书要“由薄到厚、由厚到薄”,对同学们的复习尤为重要 . 以常微分方程为例, 本部分内容涉及可分离变量、 一阶齐次、 一阶非齐次、 全微分方程、 高阶线性微分方程等内容, 在看完这部分内容会发现要掌握的解题方法太多, 遇到具体的题 目不知该如何下手, 这种情况往往是因为没有很好地总结和归纳解题方法 . 下面以表格的形 式将常微分方程中的解题方法加以总结,一目了然,便于记忆和查询 . 常微分方程 通解公式或解法 ( 名称、形式 ) 当 g( y) 0 时,得到 dy f (x)dx , g( y) 可分离变量的方程 dy f ( x) g( y) 两边积分即可得到结果; dx 当 g( 0 ) 0 时,则 y( x) 0 也是方程的 解 . 解法:令 u y xdu udx ,代入 ,则 dy 齐次微分方程 dy g( y ) x dx x u g (u) 化为可分离变量方程 得到 x du dx 一 阶 线 性 微 分 方 程 P ( x)dx P ( x) dx dy Q(x) y ( e Q( x)dx C )e P( x) y dx

伯努利方程 解法:令 u y1 n,有 du (1 n) y n dy , dy P( x) y Q( x) y n(n≠0,1)代入得到du (1 n) P(x)u (1 n)Q(x) dx dx 求解特征方程:2 pq 三种情况: 二阶常系数齐次线性微分方程 y p x y q x y0 二阶常系数非齐次线性微分方程 y p x y q x y f ( x) (1)两个不等实根:1, 2 通解: y c1 e 1x c2 e 2x (2) 两个相等实根:1 2 通解: y c1 c2 x e x (3) 一对共轭复根:i , 通解: y e x c1 cos x c2 sin x 通解为 y p x y q x y 0 的通解与 y p x y q x y f ( x) 的特解之和. 常见的 f (x) 有两种情况: x ( 1)f ( x)e P m ( x) 若不是特征方程的根,令特解 y Q m ( x)e x;若是特征方程的单根,令特 解 y xQ m ( x)e x;若是特征方程的重根, 令特解 y*x2Q m (x)e x; (2)f (x) e x[ P m ( x) cos x p n ( x)sin x]

偏微分方程数值解法答案

1. 课本2p 有证明 2. 课本812,p p 有说明 3. 课本1520,p p 有说明 4. Rit2法,设n u 是u 的n 维子空间,12,...n ???是n u 的一组基底,n u 中的任一元素n u 可 表为1n n i i i u c ?==∑ ,则,11 11()(,)(,)(,)(,)22j n n n n n n i j i j j i j j J u a u u f u a c c c f ???=== -=-∑∑是12,...n c c c 的二次函数,(,)(,)i j j i a a ????=,令 () 0n j J u c ?=?,从而得到12,...n c c c 满足1 (,)(,),1,2...n i j i j i a c f j n ???===∑,通过解线性方程组,求的i c ,代入1 n n i i i u c ?==∑, 从而得到近似解n u 的过程称为Rit2法 简而言之,Rit2法:为得到偏微分方程的有穷维解,构造了一个近似解,1 n n i i i u c ?== ∑, 利用,11 11()(,)(,)(,)(,)22j n n n n n n i j i j j i j j J u a u u f u a c c c f ???===-=-∑∑确定i c ,求得近似解n u 的过程 Galerkin 法:为求得1 n n i i i u c ? == ∑形式的近似解,在系数i c 使n u 关于n V u ∈,满足(,)(,) n a u V f V =,对任 意 n V u ∈或(取 ,1j V j n ?=≤≤) 1 (,)(,),1,2...n i j i j i a c f j n ???===∑的情况下确定i c ,从而得到近似解1 n n i i i u c ?==∑的过程称 Galerkin 法为 Rit2-Galerkin 法方程: 1 (,)(,)n i j i j i a c f ???==∑ 5. 有限元法:将偏微分方程转化为变分形式,选定单元的形状,对求解域作剖分,进而构 造基函数或单元形状函数,形成有限元空间,将偏微分方程转化成了有限元方程,利用 有效的有限元方程的解法,给出偏微分方程近似解的过程称为有限元法。 6. 解:对求解区间进行网格剖分,节点01......i n a x x x x b =<<<<=得到相邻节点1,i i x x -

常微分方程数值解法的误差分析教材

淮北师范大学 2013届学士学位论文 常微分方程数值解法的误差分析 学院、专业数学科学学院数学与应用数学 研究方向计算数学 学生姓名李娜 学号 20091101070 指导教师姓名陈昊 指导教师职称讲师 年月日

常微分方程数值解法的误差分析 李娜 (淮北师范大学数学科学学院,淮北,235000) 摘要 自然界与工程技术中的很多现象,往往归结为常微分方程定解问题。许多偏微分方程问题也可以化为常微分方程问题来近似求解。因此,研究常微分方程的数值解法是有实际应用意义的。数值解法是一种离散化的数学方法,可以求出函数的精确解在自变量一系列离散点处的近似值。随着计算机计算能力的增强以及数值计算方法的发展,常微分方程的数值求解方法越来越多,比较成熟的有Euler 法、后退Euler法、梯形方法、Runge—Kutta方法、投影法和多步法,等等.本文将对这些解的误差进行分析,以求能够得到求解常微分数值解的精度更好的方法。 关键词:常微分方程, 数值解法, 单步法, 线性多步法, 局部截断误差

Error Analysis of Numerical Method for Solving the Ordinary Differential Equation Li Na (School of Mathematical Science, Huaibei Normal University, Huaibei, 235000) Abstract In nature and engineering have many phenomena , definite solution of the problem often boils down to ordinary differential equations. So study the numerical solution of ordinary differential equations is practical significance. The numerical method is a discrete mathematical methods, and exact solution of the function can be obtained in the approximation of a series of discrete points of the argument.With the enhanced computing power and the development of numerical methods,ordinary differential equations have more and more numerical solution,there are some mature methods. Such as Euler method, backward Euler method, trapezoidal method, Runge-Kutta method, projection method and multi-step method and so on.Therefore, numerical solution of differential equation is of great practical significance. Through this paper, error of these solutions will be analyzed in order to get a the accuracy better way to solve the numerical solution of ordinary differential. Keywords:Ordinary differential equations, numerical solution methods, s ingle ste p methods, l inear multi-step methods, local truncation error

微分方程的分类及其数值解法

微分方程的分类及其数值解法 微分方程的分类: 含有未知函数的导数,如dy/dx=2x 、ds/dt=0.4都是微分方程。 一般的凡是表示未知函数、未知函数的导数与自变量之间的关系的方程,叫做微分方程。未知函数是一元函数的,叫常微分方程;未知函数是多元函数的叫做偏微分方程。微分方程有时也简称方程。 一、常微分方程的数值解法: 1、Euler 法: 00d (,), (1.1)d (), (1.2) y f x y x y x y ?=???=? 001 (),(,),0,1,,1n n n n y y x y y hf x y n N +=??=+=-? (1.4) 其中0,n b a x x nh h N -=+=. 用(1.4)求解(1.1)的方法称为Euler 方法。 后退Euler 公式???+==+++),,(),(111 00n n n n y x hf y y x y y 梯形方法公式 )].,(),([2 111+++++=n n n n n n y x f y x f h y y 改进的Euler 方法11(,),(,),1().2p n n n c n n p n p c y y hf x y y y hf x y y y y ++?=+??=+???=+??? 2、Runge-Kutta 方法: p 阶方法 : 1()O h -=?总体截断误差局部截断误差 二阶Runge-Kutta 方法 ??? ????++==++=+),,(),,(,2212 1211hk y h x f k y x f k k h k h y y n n n n n n

常微分方程数值解法

i.常微分方程初值问题数值解法 常微分方程初值问题的真解可以看成是从给定初始点出发的一条连续曲线。差分法是常微分方程初值问题的主要数值解法,其目的是得到若干个离散点来逼近这条解曲线。有两个基本途径。一个是用离散点上的差商近似替代微商。另一个是先对微分方程积分得到积分方程,再利用离散点作数值积分。 i.1 常微分方程差分法 考虑常微分方程初值问题:求函数()u t 满足 (,), 0du f t u t T dt =<≤ (i.1a ) 0(0)u u = (i.1b) 其中(,)f t u 是定义在区域G : 0t T ≤≤, u <∞上的连续函数,0u 和T 是给定的常数。我们假设(,)f t u 对u 满足Lipschitz 条件,即存在常数L 使得 121212(,)(,), [0,]; ,(,)f t u f t u L u u t T u u -≤-?∈∈-∞∞ (i.2) 这一条件保证了(i.1)的解是适定的,即存在,唯一,而且连续依赖于初值0u 。 通常情况下,(i.1)的精确解不可能用简单的解析表达式给出,只能求近似解。本章讨论常微分方程最常用的近似数值解法-差分方法。先来讨论最简单的Euler 法。为此,首先将求解区域[0,]T 离散化为若干个离散点: 0110N N t t t t T -=<< <<= (i.3) 其中n t hn =,0h >称为步长。 在微积分课程中我们熟知,微商(即导数)是差商的极限。反过来,差商就是微商的近似。在0t t =处,在(i.1a )中用向前差商 10()()u t u t h -代替微商du dt ,便得 10000()()(,())u t u t hf t u t ε=++ 如果忽略误差项0ε,再换个记号,用i u 代替()i u t 便得到 1000(,)u u hf t u -= 一般地,我们有 1Euler (,), 0,1, ,1n n n n u u hf t u n N +=+=-方法: (i.4) 从(i.1b) 给出的初始值0u 出发,由上式可以依次算出1,,N t t 上的差分解1,,N u u 。

常微分方程初值问题数值解法

常微分方程初值问题数值解法 朱欲辉 (浙江海洋学院数理信息学院, 浙江舟山316004) [摘要]:在常微分方程的课程中讨论的都是对一些典型方程求解析解的方法.然而在生产实 际和科学研究中所遇到的问题往往很复杂, 在很多情况下都不可能给出解的解析表达式. 本篇文章详细介绍了常微分方程初值问题的一些数值方法, 导出了若干种数值方法, 如Euler法、改进的Euler法、Runge-Kutta法以及线性多步法中的Adams显隐式公式和预测校正 公式, 并且对其稳定性及收敛性作了理论分析. 最后给出了数值例子, 分别用不同的方法计算出近似解, 从得出的结果对比各种方法的优缺点. [关键词]:常微分方程;初值问题; 数值方法; 收敛性; 稳定性; 误差估计 Numerical Method for Initial-Value Problems Zhu Yuhui (School of Mathematics, Physics, and Information Science, Zhejiang Ocean University, Zhoushan, Zhejiang 316004) [Abstract]:In the course about ordinary differential equations, the methods for analytic solutions of some typical equations are often discussed. However, in scientific research, the problems are very complex and the analytic solutions about these problems can’t be e xpressed explicitly. In this paper, some numerical methods for the initial-value problems are introduced. these methods include Euler method, improved Euler method, Runge-Kutta method and some linear multistep method (e.g. Adams formula and predicted-corrected formula). The stability and convergence about the methods are presented. Some numerical examples are give to demonstrate the effectiveness and accuracy of theoretical analysis. [Keywords]:Ordinary differential equation; Initial-value problem; Numerical method; Convergence; Stability;Error estimate

各类微分方程的解法大全

各类微分方程的解法 1.可分离变量的微分方程解法 一般形式:g(y)dy=f(x)dx 直接解得∫g(y)dy=∫f(x)dx 设g(y)及f(x)的原函数依次为G(y)及F(x),则G(y)=F(x)+C为微分方程的隐式通解 2.齐次方程解法 一般形式:dy/dx=φ(y/x) 令u=y/x则y=xu,dy/dx=u+xdu/dx,所以u+xdu/dx=φ(u),即du/[φ(u)-u]=dx/x 两端积分,得∫du/[φ(u)-u]=∫dx/x 最后用y/x代替u,便得所给齐次方程的通解 3.一阶线性微分方程解法 一般形式:dy/dx+P(x)y=Q(x) 先令Q(x)=0则dy/dx+P(x)y=0解得y=Ce- ∫P(x)dx,再令y=u e-∫P(x)dx代入原方程解得u=∫Q(x) e∫P(x)dx dx+C,所以y=e-∫P(x)dx[∫Q(x)e∫P(x)dx dx+C] 即y=Ce-∫P(x)dx +e- ∫P(x)dx∫Q(x)e∫P(x)dx dx为一阶线性微分方程的通解 4.可降阶的高阶微分方程解法 ①y(n)=f(x)型的微分方程 y(n)=f(x) y(n-1)= ∫f(x)dx+C1 y(n-2)= ∫[∫f(x)dx+C1]dx+C2 依次类推,接连积分n次,便得方程y(n)=f(x)的含有n个任意常数的通解②y”=f(x,y’) 型的微分方程 令y’=p则y”=p’,所以p’=f(x,p),再求解得p=φ(x,C1) 即dy/dx=φ(x,C1),所以y=∫φ(x,C1)dx+C2 ③y”=f(y,y’) 型的微分方程

令y ’=p 则y ”=pdp/dy,所以pdp/dy=f(y,p),再求解得p=φ(y,C 1) 即dy/dx=φ(y,C 1),即dy/φ(y,C 1)=dx,所以∫dy/φ(y,C 1)=x+C 2 5.二阶常系数齐次线性微分方程解法 一般形式:y ”+py ’+qy=0,特征方程r 2+pr+q=0 6.二阶常系数非齐次线性微分方程解法 一般形式: y ”+py ’+qy=f(x) 先求y ”+py ’+qy=0的通解y 0(x),再求y ”+py ’+qy=f(x)的一个特解y*(x) 则y(x)=y 0(x)+y*(x)即为微分方程y ”+py ’+qy=f(x)的通解 求y ”+py ’+qy=f(x)特解的方法: ① f(x)=P m (x)e λx 型 令y*=x k Q m (x)e λx [k 按λ不是特征方程的根,是特征方程的单根或特征方程的重根依次取0,1或2]再代入原方程,确定Q m (x)的m+1个系数 ② f(x)=e λx [P l(x)cos ωx+P n (x)sin ωx ]型 令y*=x k e λx [Q m (x)cos ωx+R m (x)sin ωx ][m=max ﹛l,n ﹜,k 按λ+i ω不是特征方程的根或是特征方程的单根依次取0或1]再代入原方程,分别确定Q m (x)和R m (x)的m+1个系数

常微分方程数值解法

第八章 常微分方程数值解法 考核知识点: 欧拉法,改进欧拉法,龙格-库塔法,单步法的收敛性与稳定性。 考核要求: 1. 解欧拉法,改进欧拉法的基本思想;熟练掌握用欧拉法,改进欧拉法、求微 分方程近似解的方法。 2. 了解龙格-库塔法的基本思想;掌握用龙格-库塔法求微分方程近似解的方 法。 3. 了解单步法的收敛性、稳定性与绝对稳定性。 例1 用欧拉法,预估——校正法求一阶微分方程初值问题 ? ??=-='1)0(y y x y ,在0=x (0,1)0.2近似解 解 (1)用1.0=h 欧拉法计算公式 n n n n n n x y y x y y 1.09.0)(1.01+=-+=+,1.0=n 计算得 9.01=y 82.01.01.09.09.02=?+?=y (2)用预估——校正法计算公式 1,0)(05.01.09.0)0(111)0(1=???-+-+=+=++++n y x y x y y x y y n n n n n n n n n 计算得 91.01=y ,83805.02=y 例2 已知一阶初值问题 ???=-='1 )0(5y y y 求使欧拉法绝对稳定的步长n 值。 解 由欧拉法公式 n n n n y h y h y y )51(51-=-=+ n n y h y ~)51(~1-=+

相减得01)51()51(e h e h e n n n -==-=-Λ 当 151≤-h 时,4.00≤

常微分方程数值解法

第八章 常微分方程的数值解法 一.内容要点 考虑一阶常微分方程初值问题:?????==0 0)() ,(y x y y x f dx dy 微分方程的数值解:设微分方程的解y (x )的存在区间是[a,b ],在[a,b ]内取一系列节 点a= x 0< x 1<…< x n =b ,其中h k =x k+1-x k ;(一般采用等距节点,h=(b-a)/n 称为步长)。在每个节点x k 求解函数y(x)的近似值:y k ≈y(x k ),这样y 0 , y 1 ,...,y n 称为微分方程的数值解。 用数值方法,求得f(x k )的近似值y k ,再用插值或拟合方法就求得y(x)的近似函数。 (一)常微分方程处置问题解得存在唯一性定理 对于常微分方程初值问题:?????==0 0)() ,(y x y y x f dx dy 如果: (1) 在B y y A x x 00≤-≤≤,的矩形内),(y x f 是一个二元连续函数。 (2) ),(y x f 对于y 满足利普希茨条件,即 2121y y L y x f y x f -≤-),(),(则在C x x 0≤≤上方程?????==0 0)() ,(y x y y x f dx dy 的解存在且唯一,这里C=min((A-x 0),x 0+B/L),L 是利普希茨常数。 定义:任何一个一步方法可以写为),,(h y x h y y k k k 1k Φ+=+,其中),,(h y x k k Φ称为算法的增量函数。 收敛性定理:若一步方法满足: (1)是p 解的. (2) 增量函数),,(h y x k k Φ对于y 满足利普希茨条件. (3) 初始值y 0是精确的。则),()()(p h O x y kh y =-kh =x -x 0,也就是有 0x y y lim k x x kh 0h 0 =--=→)( (一)、主要算法 1.局部截断误差 局部截断误差:当y(x k )是精确解时,由y(x k )按照数值方法计算出来的1~ +k y 的误差y (x k+1)- 1~ +k y 称为局部截断误差。 注意:y k+1和1~ +k y 的区别。因而局部截断误差与误差e k +1=y (x k +1) -y k +1不同。 如果局部截断误差是O (h p+1),我们就说该数值方法具有p 阶精度。

微分方程数值解法答案

包括基本概念,差分格式的构造、截断误差和稳定性,这些内容是贯穿整个教材的主线。解答问题关键在过程,能够显示出你已经掌握了书上的内容,知道了解题方法。这次考试题目的类型:20分的选择题,主要是基本概念的理解,后面有五个大题,包括差分格式的构造、截断误差和稳定性。 习题一 1. 略 2. y y x f -=),(,梯形公式:n n n n n n y h h y y y h y y )121(),(2111+-+=+- =+++,所以0122)1(01])121[()121()121(y h h y h h y h h y h h n h h n n n +--+--+-+=+-+==+-+= ,当0→h 时, x n e y -→。 同理可以证明预报-校正法收敛到微分方程的解. 3. 局部截断误差的推导同欧拉公式; 整体截断误差: ? ++++++-++≤1 ),())(,(11111n n x x n n n n n n n dx y x f x y x f R εε 11)(++-++≤n n n y x y Lh R ε,这里R R n ≤ 而111)(+++-=n n n y x y ε,所以 R Lh n n += -+εε1)1(,不妨设1

常微分方程数值解法

常微分方程数值解法 【作用】微分方程建模是数学建模的重要方法,因为许多实际问题的数学描述将导致求解微分方程的定解问题。把形形色色的实际问题化成微分方程的定解问题,大体上可以按以下几步: 1. 根据实际要求确定要研究的量(自变量、未知函数、必要的参数等)并确定坐标系。 2. 找出这些量所满足的基本规律(物理的、几何的、化学的或生物学的等等)。 3. 运用这些规律列出方程和定解条件。基本模型 1. 发射卫星为什么用三级火箭 2. 人口模型 3. 战争模型 4. 放射性废料的处理通常需要求出方程的解来说明实际现象,并加以检验。如果能得到解析形式的解固然是便于分析和应用的,但是我们知道,只有线性常系数微分方程,并且自由项是某些特殊类型的函数时,才可以得到这样的解,而绝大多数变系数方程、非线性方程都是所谓“解不出来” 的于是对于用微分方程解决实际问题来说,数值解法就是一个十分重要的手段。 1. 改进Euler 法: 2. 龙格—库塔( Runge—Kutta )方法: 【源程序】 1. 改进Euler 法: function [x,y]=eulerpro(fun,x0,x1,y0,n);%fun 为函数,(xO, x1)为x 区间,yO 为初始值,n 为子 区间个数 if nargin<5,n=5O;end h=(x1-xO)/n; x(1)=xO;y(1)=yO; for i=1:n x(i+1)=x(i)+h; y1=y(i)+h*feval(fun,x(i),y(i)); y2=y(i)+h*feval(fun,x(i+1),y1); y(i+1)=(y1+y2)/2; end 调用command 窗口 f=i nlin e('-2*y+2*x A2+2*x') [x,y]=eulerpro(f,O,,1,1O) 2 x +2x , (0 < x < , y(0) = 1 求解函数y'=-2y+2 2. 龙格—库塔( Runge—Kutta )方法: [t,y]=solver('F',tspan ,y0) 这里solver为ode45, ode23, ode113,输入参数F是用M文件定义的微分方程y'= f (x, y)右端的函数。tspan=[t0,tfinal]是求解区间,y0是初值。 注:ode45和ode23变步长的,采用Runge-Kutta算法。 ode45表示采用四阶-五阶Runge-Kutta算法,它用4阶方法提供候选解,5阶方法控制误差,是一种自适应步长(变步长)的常微分方程数值解法,其整体截断误差为(△ 口人5解 决的是Nonstiff(非刚性)常微分方程。

微分方程数值解――

微分方程数值解―― 第二章 习题 1. 设)('x f 为)(x f 的一阶广义导数,试用类似办法定义)(x f 的k 阶广义导数) () (x f k ( ,2,1=k )。 解:对一维情形,函数的广义导数是通过分部积分来定义的。 我们知,)(x f 的一阶广义导数位)(x g ,如果满足 dx x x f dx x x g b a b a )()()()('?? -=?? 类似的,)(x f 的k 阶广义导数为)()() (x f x g k =,如果有 dx x x f dx x x g b a k k b a )()()1()()()(?? -=?? 2. 试建立与边值问题 ?????====<<=+=) 2.1(0)()(,0)()() 1.1(,''44b u b u a u a u b x a f u dx u d Lu 等价的变分问题。 证明: 设}0)()(,0)()(),(|{' '2====∈=b v a v b v a v I H v v V 对方程)1.1(两边同乘以v ,再关于x 在),(b a 上积分)(V v ∈,得 ??=+b a b a fvdx vdx u dx u d )(44 其中 dx dx dv dx u d dx dx dv dx u d dx u d v dx u d d v vdx dx u d b a b a b a b a b a ???? -=-==33 33333344|)( dx dx v d dx u d dx dv dx u d dx u d d dx dv b a b a b a ??+-=-=22222222|)( dx dx v d dx u d b a ? = 2 222 (*) 记dx uv dx v d dx u d v u a b a ?+=)(),(2 222,?=b a fvdx v f ),(。于是我们得到以下等价变分问题的提法:

常微分方程的数值解

实验4 常微分方程的数值解 【实验目的】 1.掌握用MATLAB软件求微分方程初值问题数值解的方法; 2.通过实例用微分方程模型解决简化的实际问题; 3.了解欧拉方法和龙格-库塔方法的基本思想和计算公式,及稳定性等概念。 【实验内容】 题3 小型火箭初始重量为1400kg,其中包括1080kg燃料。火箭竖直向上发射时燃料燃烧率为18kg/s,由此产生32000N的推力,火箭引擎在燃料用尽时关闭。设火箭上升时空气阻力正比于速度的平方,比例系数为0.4kg/m,求引擎关闭瞬间火箭的高度、速度、加速度,及火箭到达最高点的时的高度和加速度,并画出高度、速度、加速度随时间变化的图形。 模型及其求解 火箭在上升的过程可分为两个阶段,在全过程中假设重力加速度始终保持不变,g=9.8m/s2。 在第一个过程中,火箭通过燃烧燃料产生向上的推力,同时它还受到自身重力(包括自重和该时刻剩余燃料的重量)以及与速度平方成正比的空气阻力的作用,根据牛顿第二定律,三个力的合力产生加速度,方向竖直向上。因此有如下二式: a=dv/dt=(F-mg-0.4v2)/m=(32000-0.4v2)/(1400-18t)-9.8 dh/dt=v 又知初始时刻t=0,v=0,h=0。记x(1)=h,x(2)=v,根据MATLAB 可以求出0到60秒内火箭的速度、高度、加速度随时间的变化情况。程序如下: function [ dx ] = rocket( t,x ) a=[(32000-0.4*x(2)^2)/(1400-18*t)]-9.8; dx=[x(2);a]; end ts=0:1:60;

x0=[0,0]; [t,x]=ode45(@rocket,ts,x0); h=x(:,1); v=x(:,2); a=[(32000-0.4*(v.^2))./(1400-18*t)]-9.8; [t,h,v,a]; 数据如下: t h v a 0 0 0 13.06 1.00 6.57 13.19 13.30 2.00 26.44 26.58 1 3.45 3.00 59.76 40.06 13.50 4.00 106.57 53.54 13.43 5.00 16 6.79 66.89 13.26 6.00 240.27 80.02 12.99 7.00 326.72 92.83 12.61 8.00 425.79 105.22 12.15 9.00 536.99 117.11 11.62 10.00 659.80 128.43 11.02 11.00 793.63 139.14 10.38 12.00 937.85 149.18 9.71 13.00 1091.79 158.55 9.02 14.00 1254.71 167.23 8.33 15.00 1425.93 175.22 7.65 16.00 1604.83 182.55 6.99 17.00 1790.78 189.22 6.36 18.00 1983.13 195.27 5.76 19.00 2181.24 200.75 5.21 20.00 2384.47 205.70 4.69 21.00 2592.36 210.18 4.22 22.00 2804.52 214.19 3.79 23.00 3020.56 217.79 3.41 24.00 3240.08 221.01 3.07 25.00 3462.65 223.92 2.77 26.00 3687.88 226.56 2.50 27.00 3915.58 228.97 2.27

15第十五章 常微分方程的解法

-293- 第十五章 常微分方程的解法 建立微分方程只是解决问题的第一步,通常需要求出方程的解来说明实际现象,并加以检验。如果能得到解析形式的解固然是便于分析和应用的,但是我们知道,只有线性常系数微分方程,并且自由项是某些特殊类型的函数时,才可以得到这样的解,而绝大多数变系数方程、非线性方程都是所谓“解不出来”的,即使看起来非常简单的方程如 22x y dx dy +=。于是对于用微分方程解决实际问题来说,数值解法就是一个十分重要的手段。 §1 常微分方程的离散化 下面主要讨论一阶常微分方程的初值问题,其一般形式是 ?????=≤≤=0 )() ,(y a y b x a y x f dx dy (1) 在下面的讨论中,我们总假定函数),(y x f 连续,且关于y 满足李普希兹(Lipschitz)条 件,即存在常数L ,使得 |||),(),(|y y L y x f y x f ?≤? 这样,由常微分方程理论知,初值问题(1)的解必定存在唯一。 所谓数值解法,就是求问题(1)的解)(x y 在若干点 b x x x x a N =<<<<=L 210 处的近似值),,2,1(N n y n L =的方法,),,2,1(N n y n L =称为问题(1)的数值解, n n n x x h ?=+1称为由n x 到1+n x 的步长。今后如无特别说明,我们总取步长为常量h 。 建立数值解法,首先要将微分方程离散化,一般采用以下几种方法: (i )用差商近似导数 若用向前差商h x y x y n n ) ()(1?+代替)('n x y 代入(1)中的微分方程,则得 )1,,1,0())(,() ()(1?=≈?+N n x y x f h x y x y n n n n L 化简得 ))(,()()(1n n n n x y x hf x y x y +≈+ 如果用)(n x y 的近似值n y 代入上式右端,所得结果作为)(1+n x y 的近似值,记为1+n y , 则有 )1,,1,0() ,(1?=+=+N n y x hf y y n n n n L (2) 这样,问题(1)的近似解可通过求解下述问题 ?? ?=?=+=+) () 1,,1,0(),(01a y y N n y x hf y y n n n n L (3) 得到,按式(3)由初值0y 可逐次算出N y y y ,,,21L 。式(3)是个离散化的问题,称为差分方程初值问题。

相关主题
文本预览
相关文档 最新文档