复化梯形公式的原理与实现毕业论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
摘要........................................... ,,,,,, 4 1 前言............................................... ,,,,, 5
2复化梯形公式的提出背景 (5)
3复化梯形公式的算法原理 (6)
3.1复化梯形公式的主要思想,,,,,,,,,,,,,,,,, 6 3.2复化梯形公式的计算方法,,,,,,,,,,,,,,,,, 6 3.3复化梯形公式的积分余项,,,,,,,,,,,,,,,,, 6
4算法流程图 (7)
5C语言算法程序 (8)
6算法实现
6.1 算法实例,,,,,,,,,,,,,,,,,,,,,,,, 9 6.2利用MATLA计算误差的例子11
7总结................................................... ,,, 13 8参考文献 ............................................... ,,, 13
摘要
利用若干小梯形的面积代替原方程的积分,利用微元法,可以求出坐标面上
由函数与坐标轴围城的图像的面积的近似值。
设将求积区间'a,b分成n等份,则一共有n 1个分点,按梯形公式计算积分值T n,需要提供n 1个函数值。
整个区
心何吨心”叫利用复化梯形公式计算
间上的复化梯形公式即
f e x dx和函数x = Sin(X), (x式0 ),此外也通过实例分析运用这种方法会产生怎样的1x
误差。
关键字:分点T n 函数值
.、八、-
刖言
在工程计算中,某些定积分的近似值被广泛应用。
我们在求一些具体的数值时,往往对精度的要求很高,用求积公式计算精确度的方法有很多,各
有优缺点。
通过对几种常见的方法加以比较,得出一些具体的选择方法, 为提
高计算精确度减少了很多复杂的运算。
像复化梯形公式适用对精度不高的运
算,比复化梯形公式计算复杂,但结果比复化梯形求积公式计算的精确度要
高,更适应精确度的运算,龙贝格计算积分时,不仅可以减少运算量,也可
以提高近似值的精确度。
此次主要讨论复化梯形的一些知识。
二、复化梯形公式的提出背景
b
根据人们所熟知的微积分基本定理,对于积分I二f xdx,只要找到被积函
• a
数f x的原函数F x,便有下列Newton-Leibniz 公式:b f x d^ F b - F a .
但实际使用这种求积方法往往有困难,一方面f X的原函数不易求得,或非常复杂像有
很多的被积函数,例如沁,sinx2等等,找不到用初等函数表示的原函
x
数;另一方面,函数 f x是用函数表形式给出而没有解析式,Newton-Leibniz
公式也不能直接运用,这时就采用定积分的数值计算方法,以解决定积分的近似计算。
此外在一些应用中数值求积公式的应用不仅在近似计算本身,在初等数学中,某些数列求前n项之和公式的推导颇为繁琐,应用复化梯形公式可方便地导
b
I f (x)
出这些公式。
复化梯形公式用牛顿--- N ewto n-Leib niz公式来计算a的值
的前提是:f x的原函数能够求出。
当 f x的原函数不易求出或找不到时,希望用一个易于求原函数的函数来近似代替被积函数,从而得到定积分的近似计算公
b
J f (x)
式。
下文中梯形公式T就是a常用的近似计算公式。
由定积分的几何意义可知,梯形的面积近似的代替曲边梯形的面积。
如果在整个区间a,b 上,只用单独a
一个梯形,由求梯形面积公式算出的结果为:T=( b-a)/2*[f(a)+f(b)] 作为b
f xdx二F b -F a的近似值,往往达不到精度要求,因此通常采用的方法是细
分求积区间
三、复化梯形公式的算法原理
3.1复化梯形公式的主要思想:
利用小梯形的面积代替原方程的积分,利用微元法,可以求出坐标面上由函数与坐标轴围城的图像的面积的近似值,符合了计算机计算存储的思想。
设将求积区间a,b 1分成n等份,则一共有n个分点,按梯形公式计算积分值T n,需要提供n个函数值。
在区间a,b 1内插入一列分点X i,使a=x0 < x1 <L< x i <L< x n =b,相邻两分点间的距离h=X i -
X i」称为步长。
均取等步长,即这里h二口代表
n
步长,分点为X =a ih,i = 0,1…;n.
3.2复化梯形公式的计算方法:
每个小区间'-X k,X ki 上梯形公式是
I - f X i ■ f X i 1 I 2
注意,这里h = -―a代表步长,分点为x k = a • kh,k = 0,1…,n.
n
整个区间上的复化梯形公式是
n」n」、
「八I k 八Jf X k ■ f X ki I k=0 k=0 2
即T^ - fa f X k f b
2 ] 心」
3.3复化梯形公式的积分余项:
R T n 二I -T n
由于 f x 片C 2
'a,bl ,且
故存在• a,b i 使
所以复化梯形公式的积分余项为
R T
R T = I -T n
n
四、算法流程图:
2 h 3
''
—f
i
h 3 nJ ” g |
-I x
i , x
i 1
12
a,b i
" 1nj
"
in f 八礼f i •
min
a •込-b
f '' x
开始
输出T
五、C语言算法程序
#i nclude<stdio.h>
#in clude<math.h>
#in clude<iostream> using n amespace std; #defi ne N 400 float F(float x) {
x=exp(x);
return (x );
}
int mai n()
{
float a,b,x[N],sum,T;
int n,i;
prin tf("please in put n=");
cin>>n;
prin tf("please in put a=");
cin> >a;
prin tf("please in put b=");
cin> >b;
for(i=0;i< n+1;i++)
{
x[i]=a+i*(b-a)/(float )n;
}
sum=0;
for(i=1;i <n ;i++)
{ sum=sum+F(x[i]);
}
T=(b-a)/(2*(float) n)*(F(x[0])+F(x[ n])+2*sum); cout<<"T= "<<T<<e ndl;
return 0;
}
六、算法实现
6.1算法实例
实例一:
利用复化梯形公式计算2e x dx函数,在以1为下界,2为上界,把区间分为2
等分(复化梯形公式计算在n =2, a =1,b = 2的值)。
解:运行程序
(1)显示出“please in put n=” ,“ please in put a=” , “please in put b=” , 依次输入数据,回车。
(2)显示结果如下图:
注:此时x =exp x ;在程序中对应的语句为x=exp(x);所求的函数可以定义为其
他函数得出目标函数的结果
匚、■匚t XDo'CUBentuid Sett ing?XAid3iini?tc&toc\D|eb i UE\AAA4«BB*please input n=2 please input a=l please input h=2
fr- 4.76768
Pi'ess any key to continue
M
实例二:
利用复化梯形公式计算函数x-^^, x = 0,求在以1为下界,2为上界,
x
把区间分为2等分(复化梯形公式计算在n =2, a =1,b = 2的值)。
解:运行程序
(1)显示出“please in put n=” ,“ please in put a=” , “please in put b=”, 依次输入数据,回车。
(2)显示结果如下图:
注:此时x = sin x , x = 0 ;在程序中对应的语句为x=sin(x)/x ;所求的函数可以
x
定义为其他函数得出目标函数的结果。
曲*C:\DocuMents and Settin^sVAdainist rator\Debug\AAA- exe
ul&ase iniput n=2
please input a=l
please input b H2
T= 0.656S28
Press an IF key to cont inue
—
6.2利用MATLA计算误差的例子:
function f=fx(x)
f=x.A2; %首先建立被积函数,以便于计算真实值a=0; %积分下线
b=1; %积分上线
T=[]; %用来装不同n值所计算出的结果for n=2:10;
h=(b-a)/n; %步长
x=zeros(1, n+1); %给节点定初值
for i=1: n+1
x(i)=a+(i-1)*h; %给节点赋值end
y=x.A2; %给相应节点处的函数值赋值t=0;
for i=1: n
t=t+h/2*(y(i)+y(i+1));
end
%利用复化梯形公式求值
T=[T,t];
%把不同n 值所计算出的结果装入T 中
end
R=o nes(1,9)*(-(b-a)/12*h.A 2*2);
%积分余项(计算误差) true=quad(@fx,0,1);
%积分的真实值 A=T-true;
%计算的值与真实值之差(实际误差) x=li nspace(0,1,9);
plot(x,A,'r',x,R,'*')
%将计算误差与实际误差用图像画出来
上图是利用复化梯形公式所画出的误差。
其中:红线是计算误差,
实际误差。
-0.0017 是计算误差。
0.0417、0.0185、0.0104、0.0067
0.0034、0.0026、0.0021、0.0017是n 值分别为2到10的实际误差<
注:由于被积函数是 x.A 2,它的二阶倒数为2,所以积分余项为: (-(b-a)/12*h.A 2*2) 0.0046
七.总结这种求积公式计算比较容易,但是往往因为合理的选取比较困难,同时精确度不高,因此适用于对精确度要求不高的运算,梯形积分公式的方法计算的结果还是有一定的误差。
学习这种算法我懂得了一些积分方法,同时对C语言和MATLAB 的运用有了一定的累积,同时也有了一些其他方面的感想。
虽然个人编程方面的知识非常有限,不过当我朝着这方面努力的时候,我感觉自己是满足而且充实的。
正如人生一样,没有付出就不可能有回报,一分耕耘一分收获,而对于年轻的我们来说,唯有努力和付出才能最终到达成功的彼岸。
八. 参考文献
[1]张韵华编写. 《数值计算方法与算法》(第二版)科学出版社,2006.
[2]苏州大学出版数学编写组. 《数学》(第三版)苏州大学出版社,2003.
[3]刘卫国著.《MATLA程序设计与应用》(第二版)高等教育出版社,2006.
[4]桂德怀编. 《高等应用数学》(第二版)苏州大学出版社,2007.。