整理信息与计算科学专业综合课程设计模板杨晓格Word文档下载推荐.docx
《整理信息与计算科学专业综合课程设计模板杨晓格Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《整理信息与计算科学专业综合课程设计模板杨晓格Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
姓名:
杨晓格
学号:
11001010129
专业:
信息与计算科学
班级:
110010101
指导老师:
李明
系主任:
刘瑞华
时间:
2013年11月22日
综合课程设计成绩评定书
指
导
教
师
评
语
成绩:
指导教师:
时间:
答辩小
组
意
见
设计成绩:
答辩组长:
审定
系(副)主任:
摘要……………………………………………………………………………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利用MATLAB计算误差的例子………………………………………11
7总结…………………………………………………………………………13
8参考文献……………………………………………………………………13
摘要
利用若干小梯形的面积代替原方程的积分,利用微元法,可以求出坐标面上由函数与坐标轴围城的图像的面积的近似值。
设将求积区间
分成
等份,则一共有
个分点,按梯形公式计算积分值
,需要提供
个函数值。
整个区间上的复化梯形公式即
利用复化梯形公式计算
和函数
,此外也通过实例分析运用这种方法会产生怎样的误差。
关键字:
分点
函数值
一、
前言
在工程计算中,某些定积分的近似值被广泛应用。
我们在求一些具体的数值时,往往对精度的要求很高,用求积公式计算精确度的方法有很多,各有优缺点。
通过对几种常见的方法加以比较,得出一些具体的选择方法,为提高计算精确度减少了很多复杂的运算。
像复化梯形公式适用对精度不高的运算,比复化梯形公式计算复杂,但结果比复化梯形求积公式计算的精确度要高,更适应精确度的运算,龙贝格计算积分时,不仅可以减少运算量,也可以提高近似值的精确度。
此次主要讨论复化梯形的一些知识。
二、复化梯形公式的提出背景
根据人们所熟知的微积分基本定理,对于积分
只要找到被积函数
的原函数
,便有下列Newton-Leibniz公式:
.但实际使用这种求积方法往往有困难,一方面
的原函数不易求得,或非常复杂像有很多的被积函数,例如
,
等等,找不到用初等函数表示的原函数;
另一方面,函数
是用函数表形式给出而没有解析式,Newton-Leibniz公式也不能直接运用,这时就采用定积分的数值计算方法,以解决定积分的近似计算。
此外在一些应用中数值求积公式的应用不仅在近似计算本身,在初等数学中,某些数列求前n项之和公式的推导颇为繁琐,应用复化梯形公式可方便地导出这些公式。
复化梯形公式用牛顿——Newton-Leibniz公式来计算
的值的前提是:
的原函数能够求出。
当
的原函数不易求出或找不到时,希望用一个易于求原函数的函数来近似代替被积函数,从而得到定积分的近似计算公式。
下文中梯形公式
就是
常用的近似计算公式。
由定积分的几何意义可知,梯形的面积近似的代替曲边梯形的面积。
如果在整个区间
上,只用单独一个梯形,由求梯形面积公式算出的结果为:
T=(b-a)/2*[f(a)+f(b)]作为
的近似值,往往达不到精度要求,因此通常采用的方法是细分求积区间。
三、复化梯形公式的算法原理
3.1复化梯形公式的主要思想:
利用小梯形的面积代替原方程的积分,利用微元法,可以求出坐标面上由函数与坐标轴围城的图像的面积的近似值,符合了计算机计算存储的思想。
在区间
内插入一列分点
使a=
<
L<
=b,相邻两分点间的距离h=
-
称为步长。
均取等步长,即这里
代表步长,分点为
3.2复化梯形公式的计算方法:
每个小区间
上梯形公式是
注意,这里
整个区间上的复化梯形公式是
即
3.3复化梯形公式的积分余项:
,
由于
,且
故存在
使
所以复化梯形公式的积分余项为
四、算法流程图:
五、C语言算法程序
#include<
stdio.h>
math.h>
iostream>
usingnamespacestd;
#defineN400
floatF(floatx)
{
x=exp(x);
return(x);
}
intmain()
floata,b,x[N],sum,T;
intn,i;
printf("
pleaseinputn="
);
cin>
>
n;
pleaseinputa="
a;
pleaseinputb="
b;
for(i=0;
i<
n+1;
i++)
{
x[i]=a+i*(b-a)/(float)n;
}
sum=0;
for(i=1;
sum=sum+F(x[i]);
T=(b-a)/(2*(float)n)*(F(x[0])+F(x[n])+2*sum);
cout<
<
"
T="
T<
endl;
return0;
六、算法实现
6.1算法实例
实例一:
函数,在以1为下界,2为上界,把区间分为2等分(复化梯形公式计算在
的值)。
解:
运行程序
(1)显示出“pleaseinputn=”,“pleaseinputa=”,“pleaseinputb=”,依次输入数据,回车。
(2)显示结果如下图:
注:
此时
;
在程序中对应的语句为x=exp(x);
所求的函数可以定义为其他函数得出目标函数的结果。
实例二:
利用复化梯形公式计算函数
,求在以1为下界,2为上界,把区间分为2等分(复化梯形公式计算在
(1)显示出“pleaseinputn=”,“pleaseinputa=”,“pleaseinputb=”,依次输入数据,回车。
在程序中对应的语句为x=sin(x)/x;
6.2利用MATLAB计算误差的例子:
functionf=fx(x)
f=x.^2;
%首先建立被积函数,以便于计算真实值。
a=0;
%积分下线
b=1;
%积分上线
T=[];
%用来装不同n值所计算出的结果
forn=2:
10;
h=(b-a)/n;
%步长
x=zeros(1,n+1);
%给节点定初值
fori=1:
n+1
x(i)=a+(i-1)*h;
%给节点赋值
end
y=x.^2;
%给相应节点处的函数值赋值
t=0;
n
t=t+h/2*(y(i)+y(i+1));
%利用复化梯形公式求值
end
T=[T,t];
%把不同n值所计算出的结果装入T中
end
R=ones(1,9)*(-(b-a)/12*h.^2*2);
%积分余项(计算误差)
true=quad(@fx,0,1);
%积分的真实值
A=T-true;
%计算的值与真实值之差(实际误差)
x=linspace(0,1,9);
plot(x,A,'
r'
x,R,'
*'
)%将计算误差与实际误差用图像画出来
由于被积函数是x.^2,它的二阶倒数为2,所以积分余项为:
(-(b-a)/12*h.^2*2)
上图是利用复化梯形公式所画出的误差。
其中:
红线是计算误差,‘*’号是实际误差。
-0.0017是计算误差。
0.0417、0.0185、0.0104、0.00670.0046、0.0034、0.0026、0.0021、0.0017是n值分别为2到10的实际误差。
七.总结
这种求积公式计算比较容易,但是往往因为合理的选取比较困难,同时精确度不高,因此适用于对精确度要求不高的运算,梯形积分公式的方法计算的结果还是有一定的误差。
学习这种算法我懂得了一些积分方法,同时对C语言和MATLAB的运用有了一定的累积,同时也有了一些其他方面的感想。
虽然个人编程方面的知识非常有限,不过当我朝着这方面努力的时候,我感觉自己是满足而且充实的。
正如人生一样,没有付出就不可能有回报,一分耕耘一分收获,而对于年轻的我们来说,唯有努力和付出才能最终到达成功的彼岸。
八.参考文献
[1]张韵华编写.《数值计算方法与算法》(第二版)科学出版社,2006.
[2]苏州大学出版数学编写组.《数学》(第三版)苏州大学出版社,2003.
[3]刘卫国著.《MATLAB程序设计与应用》(第二版)高等教育出版社,2006.
[4]桂德怀编.《高等应用数学》(第二版)苏州大学出版社,2007.