数值分析上机实验报告 下载本文

内容发布更新时间 : 2024/4/27 23:27:29星期一 下面是文章的全部内容请认真阅读。

哈工大A16公寓1214室 院士之家团队之作品

(Ps:请各位师兄弟姐妹们抄的时候注意改动一下,尽量不要太雷同)

实验报告五

题目: Romberg积分法

摘要:对于实际的工程积分问题,很难应用Newton-Leibnitz公式去求解。因此应用数值方法进行求解积分问题已经有着很广泛的应用,本文基于Romberg积分法来解决一类积分问题。

前言:(目的和意义)

1. 理解和掌握Romberg积分法的原理; 2. 学会使用Romberg积分法;

3. 明确Romberg积分法的收敛速度及应用时容易出现的问题。 数学原理:

考虑积分I(f)??f(x)dx,欲求其近似值,通常有复化的梯形公式、Simpsion公式和

abCotes公式。但是给定一个精度,这些公式达到要求的速度很缓慢。如何提高收敛速度,自然是人们极为关心的课题。为此,记T1,k为将区间[a,b]进行2k等分的复化的梯形公式计算结果,记T2,k为将区间[a,b]进行2k等分的复化的Simpsion公式计算结果,记T3,k为将区间[a,b]进行2k等分的复化的Cotes公式计算结果。根据Richardson外推加速方法,可以得到收敛速度较快的Romberg积分法。其具体的计算公式为:

1. 准备初值,计算

T1,1?a?b[f(a)?f(b)] 2k?12. 按梯形公式的递推关系,计算

T1,k?11b?a2?1b?a?T1,k?k?f(a?k?1(i?0.5)) 222i?04m?1Tm?1,k?1?m?Tm?1,k?m4m?1?13. 按Romberg积分公式计算加速值

Tm,k?m? m=2,…,k

4. 精度控制。对给定的精度R,若

Tm,1?Tm?1,1?R

.21.

哈工大A16公寓1214室 院士之家团队之作品

(Ps:请各位师兄弟姐妹们抄的时候注意改动一下,尽量不要太雷同)

则终止计算,并取Tm,1为所求结果;否则返回2重复计算,直至满足要求的精度为止。 程序设计:

本实验采用Matlab的M文件编写。其中待积分的函数写成function的方式,例如如下

function yy=f(x,y); yy=x.^3;

写成如上形式即可,下面给出主程序

Romberg积分法源程序

%%% Romberg积分法 clear

%%%积分区间 b=3; a=1;

%%%精度要求 R=1e-5;

%%%应用梯形公式准备初值 T(1,1)=(b-a)*(f(b)+f(a))/2; T(1,2)=T(1,1)/2+(b-a)/2*f((b+a)/2); T(2,1)=(4*T(1,2)-T(1,1))/(4-1); j=2; m=2;

%%%主程序体%%%

while(abs(T(m,1)-T(m-1,1))>R);%%%精度控制 j=j+1; s=0;

for p=1:2^(j-2);

s=s+f(a+(2*p-1)*h/(2^(j-1))); end

T(1,j)=T(1,j-1)/2+h*s/(2^(j-1)); %%%梯形公式应用 for m=2:j; k=(j-m+1);

T(m,k)=((4^(m-1))*T(m-1,k+1)-T(m-1,k))/(4^(m-1)-1); end end

%%%给出 Romberg积分法的函数表

.22.

哈工大A16公寓1214室 院士之家团队之作品

(Ps:请各位师兄弟姐妹们抄的时候注意改动一下,尽量不要太雷同)

I=T(m,1)

结果分析和讨论:

进行具体的积分时,精度取R=1e-8。 1. 求积分?1006x3dx。精确解I= 24999676。

运行程序得Romberg积分法的函数表为

1.0e+007 *

4.70101520000000 3.05022950000000 2.63753307500000 2.49996760000000 2.49996760000000 0 2.49996760000000 0 0

由函数表知Romberg积分给出的结果为2.4999676*10^7,与精确没有误差, 精度很高。 2. 求积分?311dx。精确解I=ln3= 1.09861228866811。 x运行程序得Romberg积分法的函数表为

1.33333333333333 1.16666666666667 1.11666666666667 1.10321067821068 1.09976770156303 1.09890151516846 1.09868461878559 1.11111111111111 1.10000000000000 1.09872534872535 1.09862004268048 1.09861278637027 1.09861231999130 0 1.09925925925926 1.09864037197371 1.09861302227749 1.09861230261625 1.09861228889937 0 0 1.09863054836600 1.09861258815533 1.09861229119306 1.09861228868164 0 0 0 1.09861251772313 1.09861229002850 1.09861228867179 0 0 0 0 1.09861228980593 1.09861228867046 0 0 0 0 0 1.09861228867019 0 0 0 0 0 0

从积分表中可以看出程序运行的结果为1.09861228867019,取8位有效数字,满足要求。 3. 求积分?sinxdx。 0x1直接按前面方法进行积分,会发现系统报错,出现了0为除数的现象。出现这种情况的原因就是当x=0时,被积函数分母出现了0,如果用一个适当的小数?(最好不要小于程序给定的最小误差值,但是不能小于机器的最大精度)来代替,可以避免这个问题。本实验取??R,可得函数表为:

0.92073548319659 0.93979327500190 0.94451351171417 0.94569085359489 0.94598501993743 0.94614587227034 0.94608692395160 0.94608330088846 0.94608307538495 0 0.94608299406368 0.94608305935092 0.94608306035138 0 0 0.94608306038722 0.94608306036726 0 0 0 0.94608306036718 0 0 0 0

故该函数的积分为0.94608306036718,取8位有效数字。

.23.

哈工大A16公寓1214室 院士之家团队之作品

(Ps:请各位师兄弟姐妹们抄的时候注意改动一下,尽量不要太雷同)

4. 求积分?sinx2dx

01本题的解析解很难给出,但运用Romberg积分可以很容易给出近似解,函数表为:

0.42073549240395 0.33406972582924 0.31597536075922 0.31168023948094 0.31062036680949 0.31035626065456 0.30518113697100 0.30994390573588 0.31024853238818 0.31026707591900 0.31026822526959 0 0.31026142365354 0.31026884083167 0.31026831215439 0.31026830189296 0 0 0.31026895856465 0.31026830376269 0.31026830173008 0 0 0 0.31026830119484 0.31026830172211 0 0 0 0 0.31026830172262 0 0 0 0 0

故该函数的积分为0.31026830172262,取8位有效数字。 结论:

Romberg积分通常要求被积函数在积分区间上没有奇点。如有奇点,且奇点为第一间断点,那么采用例3的方法,还是能够求出来的,否则,必须采用其它的积分方法。当然,Romberg积分的收敛速度还是比较快的。

.24.

哈工大A16公寓1214室 院士之家团队之作品

(Ps:请各位师兄弟姐妹们抄的时候注意改动一下,尽量不要太雷同)

实验报告六

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

摘要:本实验主要采用经典四阶的R-K方法和四阶Adams预测-校正方法来求解常微分方程的数值解。

前言:(目的和意义)

通过编写程序,进行上机计算,使得对常微分方程初值问题的数值解法有更深刻的理解,掌握单步法和线性多步法是如何进行实际计算的及两类方法的适用范围和优缺点,特别是对这两类方法中最有代表性的方法:R-K方法和Adams方法及预测-校正方法有更好的理解。通过这两种方法的配合使用,掌握不同的方法如何配合在一起,解决实际问题。

数学原理:

对于一阶常微分方程初值问题

?dy/dx?f(x,y) (1) ??y(x0)?y0的数值解法是近似计算中很中的一部分。

常微分方程的数值解法通常就是给出定义域上的n个等距节点,求出所对应的函数值yn。通常其数值解法可分为两大类:

1. 单步法:这类方法在计算yn+1的值时,只需要知道xn+1、xn和yn即可,就可算出。

这类方法典型有欧拉法和R-K法。

2. 多步法:这类方法在计算yn+1的值时,除了需要知道xn+1、xn和yn值外,还需要

知道前k步的值。典型的方法如Adams法。

经典的R-K法是一个四阶的方法。它最大的优点就是它是单步法,精度高,计算过程便于改变步长。其缺点也很明显,计算量大,每前进一步就要计算四次函数值f。它的具体的计算公式如式(2)所示。

四阶Adams预测-校正方法是一个线性多步法,它是由Adams显式公式

?yn?1?yn?(K1?2K2?2K3?K4)h/6?K1?f(xn,yn)??K2?f(xn?h/2,yn?K1h/2) (2) ??K3?f(xn?h/2,yn?K2h/2)??K4?f(xn?h,yn?K3h)?.25.