数值分析课程设计报告28436.pdf
《数值分析课程设计报告28436.pdf》由会员分享,可在线阅读,更多相关《数值分析课程设计报告28436.pdf(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数 值 分 析 课 程 设 计 报 告 摘要(中):本文建立在数值分析的理论基础上,能够在 Matlab 环境中运行,给出了理论分析、程序清单以及计算结果。更重要的是,还有详细的对算法的框图说明。首先运用 Romberg 积分方法对给出定积分进行积分,然后对得到的结果用插值方法,分别求出 Lagrange 插值多项式和 Newton 插值多项式,再运用最小二乘法的思想求出拟合多项式,最后对这些不同类型多项式进行比较,找出它们各自的优劣。Summary(Enlish):This essay is based on numerical analysis,and could be operated
2、in Matlab environment,including theroy analysis,program and results.Whats more,there are detailed diagram which shows how the algorithm works.It first uses the integrating method of Romberg,which is an improved trapezoidal integration,to solve the given definite integral,then we create Lagranges int
3、erpolation polynomial and Newtons interpolation polynomial.And according to least square method,curve fitting polynomial is created.At the last part of the essay,we compare these different patterns of polynomial,founding their distinctive advantages and disadvantages.主题词:Romberg 积分,插值方法,Langrange 插值
4、多项式,Newton 插值多项式,拟合多项式。一.问题提出:已知椭圆的周长可以表示成 s=a2022cos1d(01),取 a=1,针对从 0.1 到 0.9(步长 h=0.1)分别求出周长 s;(用 Romberg 积分方法)对于以上数据,求出的插值多项式;对于中数据,试用最小二乘法的思想求作拟合多项式(要求是偶次),并对这些多 项式的优劣进行比较。二问题解决:依据问题出现先后顺序,对三个小问进行讨论。Romberg 算法是在复化梯形求积公式的基础上,应用理查逊外推构造的一种数值积分方法。由复合梯形公式的展开定理,得到如下关系式:T1(h)-I=aah2+a2h4+a3h6+amh2m+其中
5、,I=badxxf)(,T1(h)=Tn.利用 Richardson 外推定理对 T1(h)进行加速,注意这里取 m=1,q=21,有 利用 T0(2h)和 T0(22h)可以得到 实际上 T1(h)就是复化抛物线求积公式,一般的计算公式,)21(1)2()21()2()2()1(21)1(211mkmmkmkmhThThT(m=1,2,k=0,1,2,)即14)2()2(4)(11111mkmkmmmhThThT.由于 Romberg 求积过程是每次把区间缩小一半,所以 Romberg 积分方法也叫做逐次分半加速收敛法。Robermg 求积算法的计算过程如下:取 k=0,h=b-a,求)0(
6、0T=).()(2bfafh 令 1k(k 记区间a,b的二分次数).求梯形值 T0kab2,即按递推公式10212)(221nkknnxfhTT计算)(0kT.求加速值,按公式14)2()2(4)(11111mkmkmmmhThThT逐个求出如表的第 k 行其余 各元素 Tj(k-j)(j=1,2,k).若)0(1)0(kkTT0.0001&ik)|i4 i=i+1;h=h/2;s=0;for n=1:M x=a+h*(2*n-1);s=s+feval(f,p,x);end R(i+1,1)=R(i,1)/2+h*s;M=2*M;for j=1:i R(i+1,j+1)=R(i+1,j)+(
7、R(i+1,j)-R(i,j)/(4j-1);end err=abs(R(i,i)-R(i+1,i+1);end S=R(i+1,i+1)function y=f(p,x)y=sqrt(1+p.2*cos(x).2);在 Matlab 中运行,分别输入 p=0.1,0.9,计算结果列出如表:0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 s 6.2989 6.3456 6.4223 6.5274 6.6592 6.8153 6.9936 7.1919 7.4082 利用的计算结果,求插值多项式。构造 4 阶零矩阵 D 第一列元素R(J,1)存放二分 J 次后的梯形值 利
8、用公式依据 T 表顺序求每行其余元素 R(J,K),保存在一个特别的下三角矩阵中 当|R(J,J)-R(J+1,J+1)|y=12.6488*power(x,8)-51.4881*power(x,7)+87.9514*power(x,6)-81.7083*power(x,5)+44.6592*power(x,4)-14.8231*power(x,3)+4.3946*power(x,2)-0.2795*x+6.2940 y=Columns 1 through 7 6.2989 6.3456 6.4223 6.5274 6.6592 6.8153 6.9936 Columns 8 through
9、9 7.1920 7.4083 Lagrange 插值多项式形式对称,公式中的每一项与所有的插值点有关。因此,用它计算 f(x)在插值点 x 的近似值时,也有不便之处:假如需要增加一个插值结点,则原来计算的插值多项式 Pn(x)对计算 Pn+1(x)没有用。我们希望,增加新的插值结点时,原先计算的结果对后面的计算过程仍然有用。Newton 插值多项式就具有这种优点。Newton 插值多项式:Nn(x)=a0+a1(x-x0)+an(x-x0)(x-x1)(x-xn-1).其中,ak=fx0,x1,xk,k=0,1,n.一般地,称 111011010,.,.,.,kkkkkkxxxxxfxxxx
10、fxxxf为 f(x)的 k 阶均差。系数 a0,a1,an具有一种不变性。这是说,当计算得到 Nn(x)后,若要增加一个结点,则只要从 Nn(x)增加一项 an+1(x-x0)(x-x1)(x-xn-1)(x-xn),便立刻得到 Nn+1(x).Newton 插值多项式还可写作:Nn(x)=(an(x-xn-1)+an-1(x-xn-2)+)+a0*均差表如下:xk fxk f,f,f,f,x0 fx0 x1 fx1 fx0,x1 x2 fx2 fx1,x2 fx0,x1,x2 x3 fx3 fx2,x3 fx1,x2,x3 fx0,x1,x2,x3 x4 fx4 fx3,x4 fx2,x3
11、,x4 fx1,x2,x3,x4 fx0,x1,x2,x3,x4 程序框图:构造n阶零矩阵D 把y的值存入 D的第一列 依次计算第 k 阶均差,保留在 D 的第(k+1)列 编写 Matlab 程序 newpoly.m:function C,D=newpoly(x,y)n=length(x);D=zeros(n,n);D(:,1)=y;for j=2:n for k=j:n D(k,j)=(D(k,j-1)-D(k-1,j-1)/(x(k)-x(k-j+1);end end D C=D(n,n);for k=(n-1):-1:1 C=conv(C,poly(x(k);m=length(C);C
12、(m)=C(m)+D(k,k);end 运行结果:D=Columns 1 through 7 6.2989 0 0 0 0 0 0 6.3456 0.4670 0 0 0 0 0 6.4223 0.7670 1.5000 0 0 0 0 6.5274 1.0510 1.4200 -0.2667 0 0 0 6.6592 1.3180 1.3350 -0.2833 -0.0417 0 0 6.8153 1.5610 1.2150 -0.4000 -0.2917 -0.5000 0 6.9936 1.7830 1.1100 -0.3500 0.1250 0.8333 2.2222 7.1919 1
13、.9830 1.0000 -0.3667 -0.0417 -0.3333 -1.9444 7.4082 2.1630 0.9000 -0.3333 0.0833 0.2500 0.9722 Columns 8 through 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.9524 0 4.1667 12.6488 ans=Columns 1 through 7 12.6488 -51.4881 87.9514 -81.7083 44.6592 -14.8231 4.3946 Columns 8 through 9 根据(*)式利用差商即 D对角线上值元素求得Newton插值
14、多项式 -0.2795 6.2940 将结果整理,得到 Newton 插值多项式为:y=12.6488x8-51.4881x7+87.9514x6-81.7083x5+44.6592x4-14.8231x3+4.3946x2-0.2795x+6.2940 运用 Matlab 画出 Newton 插值多项式的拟合效果图,用叉“x”表示原数据点,编写 Matlab 程序 newpolyplot.m function newpolyplot x=0.1:0.1:0.9;y=6.2989 6.3456 6.4223 6.5274 6.6592 6.8153 6.9936 7.1919 7.4082;c
15、,d=newpoly(x,y);y0=polyval(c,x);plot(x,y,x,x,y0)可以看出,两个插值方法得出的结果相同,不过,Newton 插值要比 Lagrange 插值好,由于 Lagrange 插值的 n 次插值基函数 lk(x)(k=0,1,2,n)都依赖于全部插值结点,利用公式很容易得到插值多项式,但在增加或减少结点时,插值基函数 lk(x)(k=0,1,2,n)也随之变化,必须全部重新计算。而克服这个缺点的有效方法之一就是构造 Newton 插值那样的均差表,在插值点变化时,有些数据可以保留。拟合多项式 曲线拟合问题与函数插值问题不同,它不要求曲线通过所有已知点,只要
16、求得到的近似函数能反映数据的基本关系。因此,曲线拟合的过程比插值过程得到的结果更能反映客观实际。在某种意义上,曲线拟合更具有实用价值,因为实际问题中所提供的数据往往很多,如果用插值法势必要得到次数很高的插值多项式,导致计算上的很多麻烦。一般总是希望各观察数据与拟合曲线的偏差的平方和最小,这样就能使拟合曲线更接近于真实函数。这个原理就称为最小二乘原理。用最小二乘原理作为衡量“曲线拟合优劣”的准则称为曲线的最小二乘法。最小二乘法的思想是:设有 N 个数据点(xk,yk),并给定 M 个线性独立函数fj(x)。为求 M 个稀疏,使用由线性组合形成的函数 f(x),表示为:Mjjjxfcxf1 求解最
17、小误差平方和,表示为:为求解 E 的最小值,每个偏导数必须为零(即MicEi,.,2,1,0/),这样可得到如下方程组:交换上式中的求和顺序,可得一个 M*M 线性方程组,未知数是系数cj,称为正规方程组:将上面的正规方程组表示成矩阵形式可减少不必要的计算量。方程组*的系数矩阵是一个对称矩阵,并且是正定的,可以唯一地确定系数cj,根据这些特点,构造如下矩阵:f1(x1)f2(x1)fM(x1)f1(x2)f2(x2)fM(x2)F=f1(x3)f2(x3)fM(x3)f1(xN)f2(xN)fM(xN)f1(x1)f1(x2)f1(xN)f2(x1)f2(x2)f2(xN)F=f3(x1)f3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 分析 课程设计 报告 28436
限制150内