数值分析课程设计积分方法的.docx
《数值分析课程设计积分方法的.docx》由会员分享,可在线阅读,更多相关《数值分析课程设计积分方法的.docx(16页珍藏版)》请在冰豆网上搜索。
![数值分析课程设计积分方法的.docx](https://file1.bdocx.com/fileroot1/2023-1/30/4f15d8d9-9344-47ae-9348-e864350b1c63/4f15d8d9-9344-47ae-9348-e864350b1c631.gif)
数值分析课程设计积分方法的
数值分析课程设计积分方法的实际应用
数值分析课程设计报告
求积公式的实际应用
学院
数学与统计学院
专业
信息与计算科学
学号
姓名
指导教师
成绩
教师评语:
指导教师签字:
2018年1月8日
1绪论
数值分析是计算数学的一个主要部分,计算数学是数学科学的一个分支,它研究用计算机求解各种数学问题的数值检索方其理论与软件的实现。
随着计算机和计算方法的飞速发展,几乎所有学科都走向定量化和精确化,从而产生了一系列计算性的学科分支,如计算物理、计算化学、计算生物学、计算地质学、计算气象学和计算材料学等,计算数学中的数值计算方法则是解决“计算”问题的桥梁和工具。
我们知道,计算能力是计算工具和计算方法的效率的乘积,提高计算方法的效率与提高计算机硬件的效率同样重要。
科学计算已用到科学技术和社会生活的各个领域中。
数值计算方法,是一种研究并解决数学问题的数值近似解方法,是在计算机上使用的解数学问题的方法,简称计算方法。
在科学研究和工程技术中都要用到各种计算方法。
例如,在航天航空、地质勘探、汽车制造、桥梁设计、天气预报和汉字字样设计中都有计算方法的踪影。
计算方法既有数学类课程中理论上的抽象性和严谨性,又有实用性和亚丁实验性的技术特征,计算方法是一门理论性和实践性都很强的学科。
在70年代,大多数学校仅在数学系的计算数学专业和计算机系开设计算方法这门课程。
随着计算机技术的迅速发展和普及,现在计算方法课程几乎已成为所有理工科学生的必修课程。
计算方法的计算对象是微积分,线性代数,常微分方程中的数学问题。
内容包括:
插值和拟合、数值微分和数值积分、求解线性方程组的直接法和迭代法、计算矩阵特征值和特征向量和常微分方程数值解等问题。
2Gauss求积公式
2.1基本原理
求积公式
(2.1)
含有2n+2个待定参数,
,
当
为等距节点时得到的插值求积公其代数精度至少为n次,如果适当选取
,有可能使求积公式(2.1)具有2n+1次代数精度,这类求积公式称为高斯求积公式。
为具有一般性,研究带权积分
,这里
为权函数,求积公式为
(2.2)
为不依赖于
的求积系数,
为求积节点,可适当选取
及
,使(2.2)具有2n+1次代数精度。
如果求积公式(2.2)具有2n+1次代数精度,则称其节点
为高斯点,相应求积公式(2.2)称为高斯求积公式。
根据定义要使(2.2)式具有2n+1次代数精度,只要对
,(
),令(2.2)式精确成立,即
.(2.3)
当给定权函数
,求出右端积分,则可由(2.3)式解得
及
2.2程序实现
建立gaussl.m文件,写入如下内容:
functions=gaussl(a,b,n)
h=(b-a)/n;
s=0.0;
form=0:
(1*n/2-1)
s=s+h*(gaussf(a+h*((1-1/sqrt(3))+2*m))+gaussf(a+h*((1+1/sqrt(3))+2*m)));
end
2.3实例分析
例计算积分
解建立gaussf.m文件以调用gaussl.m文件中的函数,再写入如下内容:
functiony=gaussf(x)
y=sqrt(x)*log(x);
再在命令行中输入:
>>s=gaussl(0,1,20)
得出如下结果:
s=
-0.4456
3高斯-勒让德求积公式
3.1基本原理
在高斯求积公式(2.1)中,若取权函数
,区间为
,则得公式
(3.1)
由于勒让德多项式是区间
上的正交多项式,因此,勒让德多项式
的零点就是求积公式(3.1)的高斯点。
形如(3.1)式的高斯公式称为高斯-勒让德求积公式。
3.2程序实现
建立guasslegendre.m文件,写入如下内容:
function[ql,Ak,xk]=guasslegendre(fun,a,b,n,tol)
ifnargin==1
a=-1;b=1;n=7;tol=1e-8;
elseifnargin==3
n=7;tol=1e-8;
elseifnargin==4
tol=1e-8;
elseifnargin==2|nargin>5
error('TheNumberofInputArgumentsIsWrong!
');
end
%计算求积节点
symsx
p=sym2poly(diff((x^2-1)^(n+1),n+1))/(2^n*factorial(n));
tk=roots(p);%求积节点
%计算求积系数
Ak=zeros(n+1,1);
fori=1:
n+1
xkt=tk;
xkt(i)=[];
pn=poly(xkt);
fp=@(x)polyval(pn,x)/polyval(pn,tk(i));
Ak(i)=quadl(fp,-1,1,tol);%求积系数
end
%积分变量代换,将[a,b]变换到[-1,1]
xk=(b-a)/2*tk+(b+a)/2;
%检验积分函数fun的有效性
fun=fcnchk(fun,'vectorize');
%计算变量代换之后积分函数的值
fx=fun(xk)*(b-a)/2;
%计算积分值
ql=sum(Ak.*fx);
参数说明:
fun:
积分表达式,可以是函数句柄
a,b:
积分上下限
n:
积分阶数
tol:
积分精度,默认1e-6
ql:
积分结果
Ak:
积分系数
xk:
求积节点,满足ql=sum(Ak.*fun(xk))
3.3实例分析
例用4点的高斯-勒让德公式求解定积分
的近似值。
解:
打开guasslegendre.m文件,并在命令行中输入如下内容
>>symsx;
>>fun=inline(cos(x)*x^2);
>>[ql,Ak,xk]=guasslegendre(fun,0,pi/2,4)
得出结果:
ql=
0.4674
Ak=
0.5689
0.2369
0.4786
0.2369
0.4786
xk=
0.7854
0.0737
0.3625
1.4971
1.2083
即
的4点的高斯-勒让德积分结果为ql=0.4674。
4复化Simpson求积公式
4.1基本原理
复化Simpson公式是一种比较实用的积分方法,可以给出误差估计。
首先将区间[a,b]N等分,子区间的长度为
(4.1)
在每个子区间上采用Simpson公式,在用Simpson公式时,还要将子区间再二等分,因此有2N+1个分点。
即
(4.2)
经推导得到,
(4.3)
称为
为复化Simpson值,称(4.3)式为复化Simpson公式。
4.2程序实现
编写复化Simpson求积函数(函数名:
s_quad.m)
FunctionI=S_quad(x,y)
%复化求积公式
%x为被积函数自变量的等距节点;y为被积函数在节点处的函数值。
n=length(x);
m=length(y);%积分自变量的节点数应与它的函数值个数相同;
ifn~=m
error('ThelengthofXandYmustbeequal');
return;
end
ifrem(n-1,2)~=0%如果n-1不能被2整除,则调用复化公式
error('节点数不满足要求');
return;
end
N=(n-1)/2;
h=(x(n)-x
(1))/N;
a=zeros(1,n);
fork=1:
N
a(2*k-1)=a(2*k-1)+1;
a(2*k)=a(2*k)+4;
a(2*k+1)=a(2*k+1)+1;
end
I=h/6*sum(a.*y);
然后调用s_quad函数,来实现复化Simpson公式法。
建立一个文件SPS,内容如下:
clear
x=input('请输入积分上下限及点间的间隔(例如-1:
0.1:
1):
');
y=input('请输入被积公式:
y=');
I=S_quad(x,y);
disp('得出积分值I=')
disp(I);
4.3实例分析
例1用复化Simpson公式求积分
,在积分区间中点与点之间的间隔取为
0.1。
解:
运行程序,按照提示输入积分上下限、点间的间隔及被积公式,如下所示:
请输入积分上下限及点间的间隔(例如-1:
0.1:
1):
-1:
0.1:
1
请输入被积公式:
y=exp(-x.^2)
得出积分值I=
1.4936
真值为:
1.4937
例2计算积分
,将区间8等分。
解:
运行程序,按照提示输入积分上下限、等分后的区间长度及被积公式,如下
所示:
请输入积分上下限及点间的间隔(例如-1:
0.1:
1):
0:
0.125:
1
请输入被积公式:
y=x./(4+x.^2)
得出积分值I=
0.1116
真值为:
0.111572
4.4结果分析
复化Simpson计算所得的结果误差较小,精度较高,更适合科学计算与应用,且公式具有收敛性,稳定性良好。
5数值方法的实际应用
在实际问题中,往往会遇到一些困难。
有些函数找不到用初等函数表示的原函数,例如,对于积分
(5.1)
而言,不存在用初等函数表示的原函数。
而有些函数虽然能找到原函数,但计算过于复杂,例如,椭圆型积分
(5.2)
而有些情况下,只能知道某些点处的函数值,并没有函数的具体表达式。
这些情况,使我们有必要研究积分的数值计算问题。
下面我们就以梯形公式为例做以说明。
所谓梯形求积公式就是用梯形面积来近似曲边梯形面积,利用梯形公式和连续增加[a,b]的区间数来逼近:
(5.3)
第j次循环在
个等距节点处对
采样。
5.1实例分析
卫星轨道是一个椭圆,椭圆周长计算公式是
,
这里a是椭圆半长轴,c是地球中心与轨道中心(椭圆中心)的距离,记h为近地点距离,H为远地点距离,R=637km为地球半径,则
我国第一颗人造卫星近地点距离h=439km,远地点距离H=2384,试求卫星轨道的周长。
解:
第一步:
先利用Matlab画出被积函数的图形。
输入程序如下:
clear
H=2384;
h=439;
R=6371;
a=(2*R+H+h)/2
c=(H-h)/2
x=0:
0.1:
pi/2;
y=sqrt(1-(c/a)^2*(sin(x)).^2);
plot(x,y,'--')
title('梯形法则');
xlabel('x');
ylabel('y');
输出结果:
a=
7.782500000000000e+003
c=
9.725000000000000e+002
输出图形:
图5.1被积函数的图形
第二步:
应用数值积分梯形公式。
首先建立一个名为trapezg.m的M文件,程序如下:
functionI=trapezg(f_name3,a,b,n)
formatlong
%输出用15位数字表示
n=n;
h=(b-a)/n;
x=a+(0:
n)*h;
f=feval(f_name3,x);
I=h/2*(f
(1)+f(n+1));
ifn>1I=I+h*sum(f(2:
n));
end
h1=(b-a)/100;
xc=a+(0:
100)*h1;
fc=feval(f_name3,xc);
plot(xc,fc,'r');
holdon
xlabel('x');
ylabel('y');
plot(x,f)
title('数值积分梯形效果图');
plot(x,zeros(size(x)),'.')
fori=1:
n;plot([x(i),x(i)],[0,f(i)]),
end
然后建立一个名为f_name3.m的M文件定义函数,Matlab命令如下:
functiony=f_name3(x)
y=sqrt(1-(9.725000e+002/7.782500e+003)^2*(sin(x)).^2)-0.99;
输入命令程序:
>>trapezg('f_name3',0,pi/2,30)
输出结果:
ans=
0.00955791054630
输出图形:
图5.2数值积分效果图
积分结果为:
0.00955791054630+0.99=0,99955791054630
第三步:
计算最后结果:
第四步:
考虑误差。
clear
n=1;
formatlong
fprintf('\nExtendedTrapezoidalRule\n');
fprintf('\nnIError\n');
I2=0.00955791054630;
fork=1:
8
n=n*2;
I1=trapezg('f_name3',0,pi/2,n);
formatlong
ifk~=1;
fprintf('%3.0f%10.8f%10.8f\n',n,I1,I1-I2);
end
pause
end
计算7步输出结果:
ExtendedTrapezoidalRule
nIError
40.009560.00000
80.009560.00000
160.009560.00000
320.00956-0.00000
640.00956-0.00000
1280.009560.00000
2560.00956-0.00000
初始状态图:
图5.3初始状态图
计算一步结果图:
图5.4计算一步结果图
计算四步结果图:
图5.5计算四步结果图
最后计算八步结果图:
图5.6计算八步结果图
5.2结果分析
数值微积分在科学计算上有很大应用,复化梯形公式极大地简化了人们实际生活中的运算复杂性。
不仅算法简明,几何意义明确,而且迭代结果准确科学,具有更好的收敛性和广泛的实用性,且精度高收敛速度快。
本题就是利用复化积分原理,确定轨道,并加以计算,得到高精度的结果。
结论
通过本次课程设计,学习到了如何应用数学软件进行大量的数值求解方法,对该课程的理解进一步加强,对课堂知识的模糊点有了一个清晰的认识。
在本文叙述的几种方法中,高斯-勒让德求积公式可以用较少的节点数得到高精度的计算结果,是现实生活中经常用到的数值积分方法,但是当积分区间较大时,积分精度并不理想。
复化Simpson计算所得的结果误差较小,精度较高,更适合科学计算与应用,且公式具有收敛性,稳定性良好。
复化梯形公式收敛且稳定,极大地简化了人们实际生活中的运算复杂性。
不仅算法简明,几何意义明确,而且迭代结果准确科学,具有更好的收敛性和广泛的实用性,且精度高收敛速度快。
参考文献
[1]李庆扬,王能超,易大义.数值分析[M].北京:
清华大学出版社,2008.97-137.
[2]邓东皋,伊小玲.数学分析简明教程[M].北京:
高等教育出版社,2006.100-136.
[3]薛定宇,陈阳泉.高等应用数学问题的MATLAB®求解[M].北京:
清华大学出版社,2013.35-42.