重庆邮电大学数值计算课程设计213273张云华+213348刘贞宇docWord格式.docx

上传人:b****4 文档编号:7407814 上传时间:2023-05-08 格式:DOCX 页数:13 大小:18.42KB
下载 相关 举报
重庆邮电大学数值计算课程设计213273张云华+213348刘贞宇docWord格式.docx_第1页
第1页 / 共13页
重庆邮电大学数值计算课程设计213273张云华+213348刘贞宇docWord格式.docx_第2页
第2页 / 共13页
重庆邮电大学数值计算课程设计213273张云华+213348刘贞宇docWord格式.docx_第3页
第3页 / 共13页
重庆邮电大学数值计算课程设计213273张云华+213348刘贞宇docWord格式.docx_第4页
第4页 / 共13页
重庆邮电大学数值计算课程设计213273张云华+213348刘贞宇docWord格式.docx_第5页
第5页 / 共13页
重庆邮电大学数值计算课程设计213273张云华+213348刘贞宇docWord格式.docx_第6页
第6页 / 共13页
重庆邮电大学数值计算课程设计213273张云华+213348刘贞宇docWord格式.docx_第7页
第7页 / 共13页
重庆邮电大学数值计算课程设计213273张云华+213348刘贞宇docWord格式.docx_第8页
第8页 / 共13页
重庆邮电大学数值计算课程设计213273张云华+213348刘贞宇docWord格式.docx_第9页
第9页 / 共13页
重庆邮电大学数值计算课程设计213273张云华+213348刘贞宇docWord格式.docx_第10页
第10页 / 共13页
重庆邮电大学数值计算课程设计213273张云华+213348刘贞宇docWord格式.docx_第11页
第11页 / 共13页
重庆邮电大学数值计算课程设计213273张云华+213348刘贞宇docWord格式.docx_第12页
第12页 / 共13页
重庆邮电大学数值计算课程设计213273张云华+213348刘贞宇docWord格式.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

重庆邮电大学数值计算课程设计213273张云华+213348刘贞宇docWord格式.docx

《重庆邮电大学数值计算课程设计213273张云华+213348刘贞宇docWord格式.docx》由会员分享,可在线阅读,更多相关《重庆邮电大学数值计算课程设计213273张云华+213348刘贞宇docWord格式.docx(13页珍藏版)》请在冰点文库上搜索。

重庆邮电大学数值计算课程设计213273张云华+213348刘贞宇docWord格式.docx

2)在某些求积函数中,用数值积分求解一些原函数F(x)不能用初等函数表示成有限形式。

3)熟练掌握用复化梯形法,复化辛甫生法和龙贝格法求解积分。

4)编程实现复化梯形法,复化辛甫生以及龙贝格算法对积分的计算。

二、课程设计内容(题目)

数值积分收敛速度的比较

分别按下述计算方案求积分I

excosxdx的近似值,并列表给出对分节点的积分值,

从而比较其收敛速度。

积分的准确值为:

I12.070346316

方案I

复化梯形法

方案II

复化辛甫生法

方案III

龙贝格算法

三、问题的分析(含涉及的理论知识、算法等)

1)复化梯形公式:

把积分区间[a,b]等分为m个小区间,令步长

h=ba,求积节

m

xiai

h,i=0,,1,2m,等距节点复化梯形公式为

Tm

h

m1

f(xj)f(b))

(f(a)2

j1

先分段,通过避开直接算积分的繁琐步骤,直接计算函数值,再通过复化梯形公式求得积分的近似值,当n达到一定程度时,所得的结果就近似等于积分的值了.计算步骤:

算出f(a),f(b)以及f(xk)相应的值,将所有值相加后乘以h/2.即得到积分的值

2)复化辛甫生公式:

将区间[a,b]分成n等分,每等分称为一个子区间,其长度为h=(b-a)/n,分点为xk=a+kh,k=0,1,2,....即a=x0<

x1<

x2<

...<

xn=b

记子区间[xk,xk+1]的中点为xk+1/2,即xk+1/2=(xk+xk+1)/2=xk+h/2(k=0,1,2,...,n-1)

3

复化辛甫生公式

Sn

n1h(f(xk)4f(x

k

1)f(xk1))

06

n1

(f(a)4f(x

1)

2f(xk)f(b))

6

k1

k0

和复化梯形公式的算法类似

依次算出函数的值,最后得出积分的近似值,当n较大

时,结果近似等于积分的值.3)龙贝格算法

1.算出f(a)和f(b),根据数值计算方法教材公式5.26计算T1;

2.将[a,b]分半,算出f((a+b)/2)后,根据公式5.26计算T2;

;

3.再将区间分半,算出f(a+(b-a)/4)及f(a+3*(b-a)/4),并根据公式5.26计算T4.

4.将区间再次分半,计算T8.

5.将区间再次分半,类似上述过程计算T16.

四、计算过程(含涉及编写的程序、运行环境、计算结果截屏等)

流程图1复化梯形公式

输入a,b,n

h=(a-b)/nk=1

X=a+khf(x)=exp(x)*cos(x)

F(x)=F(x)+f(x)

k++

n<

=k?

Tn=0.5h(f(a)+f(b)+2F(x))

输出Tn

4

图1:

复化梯形公式计算结果1

图2:

复化梯形公式计算结果2

5

辛甫生公式复化求积:

流程图2复化辛普森公式

X1={[a+(k-1)h]+X}/2f(x1)=exp(x1)*cos(x1)

F(x)=F(x)+f(x)F1(x)=F1(x)+f(x1)

是k++

K<

Sn=(h/6)(f(a)+f(b)+2F(x)+4F1(x))

输出Sn

图3复化辛普森公式计算结果

图4龙贝格算法计算结果

五、问题求解结果的分析与结论

三种算法对分节点的积分值表

7

表1三种算法对分节点的积分值表

复化梯形公式

n=1

-34.77851492

-11.59283831

n=2

-17.38925746

-11.98494282

n=3

-14.35266097

-12.05157185

n=4

-13.33602148

图5复化辛普森公式收敛

8

结果分析:

通过计算发现,三种解法中,用复化辛甫生公式计算积分时收敛速度较快,复化梯形公式和龙贝格算法的收敛速度较慢,且后面两者的结果基本一致,但相对来说,龙贝格算法的计算量更少,更加方便.如果用折线图来描述的话,那么辛甫生算法的图像较为平整,变化幅度比较小.

六、课程设计的总结与体会(含每位同学承担的主要工作等)

1)组员分别承担的任务

张云华:

写报告,用复化辛甫生公式计算积分的编程,分别用三种算法计算节点的积分值并完成列表.

心得与体会:

在课程设计的同时不仅巩固了以前所学过的知识,而且可以学到很多在书本上所没有学到过的知识,特别是团队合作能力。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,增强了我们处理问题的能力。

还有只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正的掌握,从而提高自己的实际动手能力和独立思考的能力。

刘贞宇:

用复化梯形公式和龙贝格算法计算积分的编程,ppt的制作

学习必须通过实践,通过实践发现了自己的不足之处,并及时纠正。

在求解过程中也遇到了各种各样的问题,还有在编写程序是要注意代码,要仔细,一个数字弄错了就可能导致运行时结果出错或不合实际。

因此我们应多课外实践来加深我们对课本的理解。

附录:

源代码

复化梯形公式:

#include"

stdio.h"

math.h"

voidmain()

{

intk;

doublea,b,n,h,x;

doublef,f1,f2,T,F=0.0;

printf("

请输入abn:

"

);

scanf("

%lf%lf%lf"

&

a,&

b,&

n);

h=(b-a)/n;

for(k=1;

k<

n;

k++)

x=a+k*h;

f=exp(x)*cos(x);

\nf=%0.7f"

f);

F+=f;

\nF=%0.7f"

F);

}

if(a!

=0.0)

f1=exp(a)*cos(a);

else(f1=1.0);

\nf1=%0.7f"

f1);

f2=exp(b)*cos(b);

\nf2=%0.7f"

f2);

T=0.5*h*(f1+2*F+f2);

\nT=%0.7f"

T);

复化辛普森公式

doublea,b,n,h;

doublex,f,f1,f2,F1=0.0,F2=0.0,S=0.0;

for(k=0;

x=a+k*h+0.5*h;

F1+=f;

\nF1=%0.7f"

F1);

f=0;

F2+=f;

\nF2=%0.7f"

F2);

=0)

f2=exp(b)cos(b);

S=h/6.0*(f1+4*F1+2*F2+f2);

\nS=%0.7f"

S);

龙贝格算法:

#include<

stdio.h>

math.h>

#definee1e-5

#definea0//积分下限a

#defineb3.14159//积分上限b

#definef(x)exp(x)*cos(x)//被积函数f(x)

doublet[100][100];

intmain()

intn,k,i,m;

doubleh,g,p;

h=(double)(b-a)/2;

t[0][0]=h*(f(a)+f(b));

k=1;

n=1;

do//Romberg算法

g=0;

for(i=1;

i<

=n;

i++)

g+=f((a+((2*i-1)*h)));

t[k][0]=(t[k-1][0]/2)+(h*g);

for(m=1;

m<

=k;

m++)

p=pow(4,(double)(m));

t[k-m][m]=(p*t[k-m+1][m-1]-t[k-m][m-1])/(p-1);

m-=1;

h/=2;

n*=2;

k+=1;

11

while(fabs(t[0][m]-t[0][m-1])>

e);

//自定义误差限eprintf("

%.8lf"

t[0][m]);

return0;

12

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 数学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2