数学实验“线性多步法(数值积分法,Taylor展开法)”实验报告(内含matlab程序)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西京学院数学软件实验任务书

实验二十五实验报告

一、实验名称:线性多步法(数值积分法,Taylor 展开法)。 二、实验目的:进一步熟悉线性多步法(数值积分法,Taylor 展开法)。

三、实验要求:运用Matlab/C/C++/Java/Maple/Mathematica 等其中一种语言完成程序设计。 四、实验原理:

1.数值积分法: 常微分方程初值问题

000

(,),

()()dy

f x y x x dx

y x y ⎧=⎪≤⎨⎪=⎩ (1) 数值解法中,某一步的公式不仅与前一步解的值有关,而且与前若干步解的值有关,利用前面多步的信息预测下一步的值,这就是多步法的基本思想,可以期望获得较高的精度。

将(1)中的方程在区间[]1n n x x +,上积分,可以得到:

()()()()11n n

x n n x y x y x f x y x dx ++=+⎰

,。

用等距节点的插值多项式来替代被积函数,再对插值多项式积分,这样就得到一系列求积公式。

用梯形方法计算积分项

()()()()()()1

112

n n

x n n n n x h f x y x dx f x y x f x y x +++⎡⎤≈

+⎣⎦⎰

,,, 代入(1)中得:

()()()()()()1112

n n n n n n h y x y x f x y x f x y x +++⎡⎤≈+

+⎣⎦,, 设由1r +个数据点()()()11n n n n n r n r x f x f x f ---- ,,,,,, 构造插值多项式()r P x ,这里()0k k k k f f x y x x kh ==+,,,运用插值公式有:

()()()00r

r

n k

r n j j j j k k j n j n k

x x P x f l x l x x x --==≠---==

-∑∏,, 得到下列计算公式:

10r

n n rj n j j y y h f α+-==+∑ (2)

其中,()1100101n n r x rj j x k k j

t k

l x dx dt j r h k j α+=≠+===-∏⎰⎰ ,,,,

由此可得(2)中的系数。公式(2)是一个r+1步的显式公式,称为Adams 显式公式。

2.Taylor 展开法:

基于数值积分可以构造出一系列求解常微分方程的计算公式,下面介绍基于 Taylor 展开的待定系数法,它可灵活地构造出线性多步法。对固定的系数,可以选取待定系数使线性

多步法的阶尽可能高。还可以根据需要,确定显式还是隐式。

设构造如下具有 p 阶精度的线性多步公式:

()1011110n n n r n r n n r n r y y y y h f f f αααβββ+---+-=+++++++

(4)

它们的局部截断误差为:

()()()()1101r r

n n k n k k n k n k k k T y x y x h f x y x αβ++---==-⎡⎤

=-+⎢⎥⎣⎦∑∑,

即:()()()1101r r

n n k n k k n k k k T y x y x h y x αβ++--==-⎡⎤

'=-+⎢⎥⎣⎦

∑∑ (5)

对(5)式的右端各项在n x 点处作Taylor 展开有:

()()

()()()()()()()()()()()()()()()()1

120

11

11!1!1!

!j p p

j p p n k n n j j p p

j p p n k n n j kh kh y x y x y x O h j p kh kh y x y x y x O h j p +++-=+++-=--=+++--'=++-∑∑,

代入(5)中得:

()()

()()()1011

1

1

111

121

!

(1)[1()! ()][1()1! (1)()]()()

j

p

r

r n k n k

k j k j p p r

r

j k n k k k r

p p p k n k h T y x k j h j k y x k p p k y x O h ααβαβ+===-++==++==-+----+--+-+-+∑∑∑∑∑∑

使()2p n y x h h h ,,,,的系数为零,得到关于k α和k β的线性方程组:

()()0

11

11 112r

k k j j r r

k k k k k j k j p ααβ=-==-⎧=⎪⎪⎨⎪-+-==⎪⎩∑∑∑ ,,,,。 而且得到线性多步法的局部截断误差:

()()()()()()()1

1

11

121

[11! 1]p p r

n k

k p

r

p p k n k h T k p p k y x O h αβ+++=++=-=--+-+-+∑∑。

五、实验内容:

%数值积分法

function [k,X,Y,wucha,P]= Adams4x(funfcn,x0,b,y0,h) x=x0; y=y0;p=128; n=fix((b-x0)/h); if n<5

return ; end

X=zeros(p,1);

Y=zeros(p,length(y)); f=zeros(p,1); k=1; X(k)=x; Y(k,:)=y'; for k=2:4

c1=1/6;c2=2/6;c3=2/6; c4=1/6;a2=1/2; a3=1/2; a4=1;b21=1/2;b31=0;

b32=1/2; b41=0;b42=0;b43=1; x1=x+a2*h; x2=x+a3*h;

x3=x+a4*h; k1=feval(funfcn,x,y); y1=y+b21*h*k1; x=x+h; k2=feval(funfcn,x1,y1); y2=y+b31*h*k1+b32*h*k2; k3=feval(funfcn,x2,y2);

y3=y+b41*h*k1+b42*h*k2+b43*h*k3; k4=feval(funfcn,x3,y3);

y=y+h*(c1*k1+c2*k2+c3*k3+c4*k4); X(k)=x; Y(k,:)=y;

相关文档
最新文档