- 2
- 0
- 约4.51千字
- 约 12页
- 2023-06-15 发布于上海
- 举报
实验六
一、实验名称
复合梯形积分和复化 3 点 Gauss 积分计算数值积分二、实验目的与要求:
实验目的: 掌握复合梯形积分和复化 3 点 Gauss 积分算法。实验要求:1.给出复合梯形积分和复化 3 点 Gauss 积分算法思
路,
2.用 C 语言实现算法,运行环境为 Microsoft Visual C++。
三、算法思路:
复合梯形积分
我们把整个积分区间[a,b]分成 n 个子区间[xi,xi+1],i=0,1,2,…,n,其中 x0=a,xn+1=b。这样求定积分问题就分解为求和问题:
xS ? ?b
x
f (x)dx ? ?n
?xi
f (x)dx
ai?1
a
i ?1
当这 n+1 个结点为等距结点时, 即 x ? a ? ih,其中h ? (b ? a) / n ,
i
i=0,1,2,…,n,复化梯形公式的形式是
算法:
input n
S ? 0.0
S ? h ?n n 2
i?1
[ f (x
i?1
) ? f (x )]
i
for i=1 to n do
S ? S ?
end do output S
h ( f (x
2
i ?1
) ? f (x ))
i
复化3 点Gauss积分
根据书上 6.8 节定理 5,可以用递推法求正交多项式如下:
a ? b a ? b 1
,q (x) ?1 q
,
0 1
(x) ? x ?
2
q (x) ? (x ?
,2
,
2 )2 ? 12 (b ? a)2 ,
a ? b
q ( x) ? ( x ? )3
3 a ? b
? (b ? a) 2 ( x ? )
3 2 20 2
求 q3
? 0 的根,得到 x
? a ? b
12
1
? b ? a
352
3
5
, x2 ?
a ? b
2 ,
a ? b
x ?
3 2
? b ? a
352
3
5
? b f (x)dx ? A
a 1
f (x
1
) ? A
2
f (x
2
) ? A
3
f (x
3
) ,将 f (x) ? 1, x, x2 带入其
中得到 A ? A
1 3
? 5 (b ? a), A
18 2
? 4 (b ? a) ,带入上式得到复化 3 点 Gauss
9
积分公式。算法:
input a,b
a ?b
35b ?
3
5
a ?b
a ?b
35b ?
3
5
x ? ? ?
1 2 2
x ? x ? ? ?
,,2 2 3 2 2
,
,
A ? A
1 3
? 5 (b ? a) , A
18 2
? 4 (b ? a) 9
S ? A
1
output S
四、实验题目:
f (x
1
) ? A
2
f (x
2
) ? A
3
f (x )
3
为了方便起见,我们采取复合梯形积分的方法取 N 充分大时(这里取N 等于 2 的 20 次方)得到的积分值近似看作积分的真实值,因为题中的积分函数在积分闭区域上是一致连续的,所以由黎曼积分的定义知在N 充分大的情况下,复化梯形积分的值充分接近原积分值, 故我们这样做是合理的。
五、问题的解:
编写程序(程序见后面附录),输出结果如下:
为了便于看清数值积分结果与原函数积分实际结果的差异。我在运行程序时故意计算了一下原函数积分的近似真实结果。
分析并比较得到的数据可以看出,当k 越来越大时,error1 越来越接近于零,数值积分的结果越来越靠近原函数积分实际结果,并且误差比率总是大于零的,当误差比率越大,误差减小得越快。
复合梯形积分的误差项是? 1 (b ? a)h 2 f (? ) .,? ? (a, b) ,当 h
12
趋于零时,显然积分的误差项更快地趋于零,实验结果复符合这一结论。
从三个积分误差比率来看,第一个积分的误差比率在 4 附近
并且趋向于 4,第二个积分的误差比率从很大变到四附近,第三个积分的误差比率起初相当大,到后来就达到 4 以上附近。
观察复化 3 点Gauss 积分结果,发现第一个十分接近真实值, 误差相当小,第二个和第三个的结果也是比较接近真实值的,但是误差就大很多了。
六、附录:
实验编程,运行环境为Microsoft Visual C++
#include math.h #include stdio.h #include stdlib.h #define PI 3.1415926
double f1(double x) //定义函数 f1(x)//
{
double y; y=exp(-x*x); return(y);
}
double R1(int N,double a,double b) //建立复合梯形积分//
{
double s,h
原创力文档

文档评论(0)