数值分析与实验实践课程设计复化辛卜生公式和龙贝格算法.docx
《数值分析与实验实践课程设计复化辛卜生公式和龙贝格算法.docx》由会员分享,可在线阅读,更多相关《数值分析与实验实践课程设计复化辛卜生公式和龙贝格算法.docx(11页珍藏版)》请在冰豆网上搜索。
数值分析与实验实践课程设计复化辛卜生公式和龙贝格算法
数值分析与实验
课程设计
姓名:
舒敏
班级:
数学082
学号:
3080801241
08级应用数学《数值分析与实验(实践)》任务书
一、设计目的
通过《数值分析与实验(实践)》实践环节,掌握本门课程的众多数值解法和原理,并通过编写C语言或matlab程序,掌握各种基本算法在计算机中的具体表达方法,并逐一了解它们的优劣、稳定性以及收敛性。
在熟练掌握C语言或matlab语言编程的基础上,编写算法和稳定性均佳、通用性强、可读性好,输入输出方便的程序,以解决实际中的一些科学计算问题。
二、设计教学内容
1、数值方法的稳定性;
2、利用牛顿法和割线法程序求出非线性方程的解,并比较它们之间的优劣;
3、高斯消去法和列主元高斯消去法求解线性方程组;
雅克比法和高斯-赛德尔迭代法解方程组;
4、利用Lagrange插值多项式求未知点的近似值;
5、利用所给数据进行数据的多项式和可转化成多项式形式的函数拟合;
6、编写复化辛卜生公式和龙贝格算法,通过实际计算体会各种方法的精确度;
7、 利用改进Euler方法和四阶Runge-Kutta方法求解初值问题的微分方程组;
8、利用幂法求矩阵按模最大的特征值及对应特征向量;
(8个中选取1个)
三、设计时间
2011—2012学年第1学期:
第16周 共计一周
教师签名:
2010年12月12日
前言
随着计算机和计算方法的飞速发展,几乎所有学科都走向定量化和精确化,从而产生了一系列计算性的学科分支,如计算物理、计算化学、计算生物学、计算地质学、计算气象学和计算材料学等,计算数学中的数值计算方法则是解决“计算”问题的桥梁和工具。
我们知道,计算能力是计算工具和计算方法的效率的乘积,提高计算方法的效率与提高计算机硬件的效率同样重要。
科学计算已用到科学技术和社会生活的各个领域中。
数值计算方法是一种利用计算机解决数学问题的数值近似解方法,特别是无法用人工过计算器计算的数学问题。
数值计算方法常用于矩阵高次代数方程矩阵特征值与特征向量的数值解法,插值法,线性方程组迭代法,函数逼近,数值积分与微分,常微分方程初值问题数值解等。
作为数学与计算机之间的一条通道,数值计算的应用范围已十分广泛,作为用计算机解决实际问题的纽带,数值算法在求解线性方程组,曲线拟合、数值积分、数值微分,迭代方法、插值法、拟合法、最小二乘法等应用广泛。
数值计算方法是和计算机紧密相连的,现代计算机的出现为大规模的数值计算创造了条件,集中而系统的研究适用于计算机的数值方法是十分必要的。
数值计算方法是在数值计算实践和理论分析的基础上发展起来的。
通过数值计算方法与实验将有助于我们理解和掌握数值计算方法基本理论和相关软件的掌握,熟练求解一些数学模和运算。
并提高我们的编程能力来解决实际问题。
前言………………………………………………………………2
摘要………………………………………………………………4
课程设计内容……………………………………………………4
1.目的与要求…………………………………………………4
二.实验内容……………………………………………………4
三.算法与实例…………………………………………………5
3.1复化辛卜生公式算法…………………………………………………5
3.2龙贝格算法……………………………………………………………5
3.3复化辛卜生公式算法C语言程序……………………………………5
3.4复化辛卜生公式运行结果……………………………………………6
3.5龙贝格算法Matlab程序………………………………………………9
3.6龙贝格算法运行结果…………………………………………………10
3.7结果分析………………………………………………………………10
参考文献…………………………………………………………10
摘要
随着计算机的迅速发展和广泛应用,在众多的领域内,人民越来越认识到科学计算是科学研究的第三中方法,当今理科学生更应具备这方面的知识与能力,计算方法作为科学计算的一门主干课程又市我们的必修课,我们要认真学习,数值计算方法不只注重理论分析还要求实验和实践,这样才能使我们更灵活地掌握数值计算方法。
所以我们也要认真作好数值分析与实验实践环节。
本文通过编写复化辛卜生、龙贝格算法求定积分的程序来解决实例问题,其中复化辛卜生公式我用C语言编写,龙贝格算法程序用的是Matlab编写的,以此来达到学以致用的目的,
[关键字]:
复化辛卜生公式龙贝格算法C语言Matlab
课程设计内容
一、目的与要求:
Ø通过实际计算体会各种方法的精确度;
Ø会编写用复化辛卜生、龙贝格算法求定积分的程序。
二、实验内容:
通过实际计算体会各种方法的精确度并且会编写用复化辛卜生、龙贝格算法求定积分的程序,按下列数据使用复化辛卜生公式和龙贝格算法求它们积分:
三、算法与实例
3.1复化辛卜生公式算法
复化辛卜生公式为Sn=
计算过程为:
1.令
2.对
计算:
3.
。
3.2龙贝格算法
用事后估计法控制精度
3.3复化辛卜生公式算法C语言程序:
#include
#include/*此头函数请不要删除*/
#include
floatN,A=0,B=0.8,X;
floatF(floatx);
floatSi()//复化辛普生公式
{floati,n,h,t,s1,s2=0;
n=N;
h=(B-A)/n;
s1=F(A+h/2);
for(i=1;i{X=A+i*h+h/2;
s1=F(X)+s1;
}
for(i=1;i{X=A+i*h;
s2=F(X)+s2;
}
t=h*(F(A)+4*s1+2*s2+F(B))/6;
return(t);
}
floatF(floatx)//被积分函数f(x)
{floatf;
f=exp(-x*x);
return(f);
}
doublemain()//主函数
{floatz;
printf("\n输入n的值:
\n");
scanf("%f",&N);
{z=Si();
printf("利用复化辛普生公式计算");
}
printf("结果为:
%f\n",z);
getch();/*此语句请不要删除*/
}
3.4复化辛卜生公式运行结果:
s
(1)=0.658116
s
(2)=0.657696
s(3)=0.657675
s(4)=0.657671
s(5)=0.657671
3.5龙贝格算法Matlab程序:
functionRomberg(a,b,eps)
A=zeros(4,4);
A(1,1)=(b-a)/2*(f(a)+f(b));
i=1;n=1;
while1
i=i+1;
m=2*n+1;
x=a:
(b-a)/(2*n):
b;
A(i,1)=1/2*(A(i-1,1)+(b-a)/n*sum(f(x(2:
2:
m-1))));
ifi>4
k=4;
elsek=i;
end
forj=2:
k
A(i,j)=A(i,j-1)+1/(4^(j-1)-1)*(A(i,j-1)-A(i-1,j-1));
end
ifabs(A(i,4)-A(i-1,4))break;
end
n=n*2;
end
fprintf('R=%f\n',A(i,4));
functiony=f(x)%f为被积分函数的表达式
y=exp(-x.^2);
3.6龙贝格算法运行结果
>>a=[0]
a=
0
>>b=[0.8]
b=
0.8000
>>Romberg(0,0.8,eps)
R=0.657670
>>
3.7结果分析
复化辛卜生公式和龙贝格算法适用于求数值积分,而且提高计算积分的精度。
参考文献
[1]袁慰平,孙志忠,吴宏伟.计算方法与实习.南京:
东南大学出版社,2005