好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

《数值分析》课程设计报告范文.docx

9页
  • 卖家[上传人]:人***
  • 文档编号:464373357
  • 上传时间:2022-08-02
  • 文档格式:DOCX
  • 文档大小:47.26KB
  • / 9 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 课程设计报告课程设计题目:学生姓名: 专业 班级 指导教师年月日题目:用熟悉的计算机语言编程上机完成(1) 用Newton-Cotes公式计算积分J1 e-x2dx的近似值,自己设置不同精度要求,0 对结果进行比较分析2) 用Romberg积分法计算积分J1 e - x2 dx的近似值,自己设置不同精度要求,对0结果进行比较分析;与(1)的结果进行比较分析,谈谈你的体会3) 记f(x)= e-x2,在上面的计算中f(x)只取4位有效数字或7位有效数字, 计算结果有什么不同4) 上面计算精度可达 8-20 位有效数字吗?若可以请说明实现过程,并举例一、 摘要在 matlab 环境下熟悉的运用计算机编程语言并结合 Newton-Cotes 和 Romberg 的理论基础对函数求积分,在运行完程序后以及对运行结果做出各方面 的分析和比较二、 设计目的用熟悉的计算机语言编程上机完成 Newton-Cotes 公式计算积分和 Romberg 积分法计算积分二、理论基础牛顿柯斯特公式:设将积分区间[a,b]划分为n等份,步长h= (b-a) /n,选取等距节点x =a+kh构造出的插值型求积分公式I =(b - a为C(n))f(k),称为 k n kk 二 0牛顿一柯斯特(Newton-Cotes)公式,式中c(")称为柯特斯系数,引进变换x=a+th, k(- 1)n-k则有 C (”)= h /(b - a) Jn n (t - j dt = Jn n (t - j)dtk 0 (k - j) nk !(n - k)! 0j = 0 j 丰 k j = 0 j 丰 k龙贝格求积公式:(1) •梯形法的递推化 设将区间[a,b ]分为n等份,共有n+1个分点,如果将 求积区间再二分一次,则分点增至2n+1个,我们将二分前后两人积分值联系起 来加以考察, 注意到每个子区间[ x ,x ]经过二分只增加了一个分点 k k + 1x 1= 1(x + x ),用复合梯形公式求得该子区间上的积分值为 k + 2 k k +12-[f (X) + 2f (X J + f (X )],注意,这里h = (b-a)/n代表二分前的步长,将每4 k + k + 12个子区间上的积分值相加得T = — S [ f(x)+ f(x )] + — S f(x J,从而利2 n 4 k k +1 2 k +k 二 0 k 二 0 2用上式可导出下列递推分式:T =丄T + hS f(x j2 n 2 n 2 k +k 二 0 2(2) •外推技巧 从梯形公式出发,将区间[a,b ]逐次二分可提高求积公式精度,当[a,b ]分为 n 等份 I - T =-b - a h 2 fn (n), [a,b], h = b-an 12 n=T(—), 并且有2若记T = t (h),当区间[a,b]分为2n等份时,则有Tt(h)= i + b-ah2 f ”⑴),lim t(h)= t(o)= I. 12n2h t 0(3) .龙贝格算法 将 上 述 外推 技巧 得到 的 公 式 重 新引 入记号T (h) = T (h), T (h) = S (h)01T (h) = c (h), T (h) = r (h)等从而可将上述公式定成统一形式23m m -1T (h) = 4 T (h) - 1 T (h)经过m(m=1.2.3……)次加速后,余项便 m 4m - 1 m-1 2 4m - 1取下列形式:T ( h ) = I +5 h 2( m +1) + 5 h 2( m +1) + m 1 2这方法通常称为理查森外推加速方法。

      设以T (k)表示二分次后求得的梯形值,且以T (k)表示序列{ T (k) }的m次加速值,m m m4m则依递推公式可得T (k) = 4 T (k+1) - 1 T (k), k = 1.2m 4m - 1 m-1 4m - 1 m-1公式也称为龙贝格算法,计算过程如下:i .取 k=O,h=b-a,求 T(0) = -[ f(a)+ f(b)]02令1 t k (k记区间[a,b]二分次数)ii •求梯形值T( j),即按递推公式计算T(k)0 2 k 0iii. 求加速值,按公式a逐个求出T表的第k行其余各元素T jk「j) (j=l,2,…,k) •iv. 若|T k0) —T畀|a (预先设定的精度),则终止计算,并取T :0)〜I;否则令 k+1 t k转(2)继续计算.khT( k )0T( k )1T( k)2T( k)3T( k) …40b-aT(o)0• • •1b 一 a2T⑴①T(o)1• • •2b 一 aT 02)②T1"③T(o)• • •423b 一 a8T 03)④T 12)⑤T 2"⑥T(o)3• • •4b 一 a16T 04)⑦T 13)⑧t221 ⑨T 3"⑩T(o)4• • •:::::::• • •b 一 a表指出了计算过程,第2列h= 7厂给出了子区间长度,i表示第i步外推•可以 证明,如果f(x)充分光滑,那么T表每一列的元素及对角线元素均收敛到所要 求的积分值I.三、程序代码及运算结果 牛顿柯斯特求积分:function y=mulNewtonCotes(a,b,m,n)fun=@(x)exp(-x「2);xk=linspace(a,b,m+1)for i=1:ms(i)=NewtonCotes(fun,xk(i),xk(i+1),n);endy=sum(s);function [y,Ck,Ak]=NewtonCotes(fun,a,b,n)%fun=@(x)exp(-x/2)if nargin==1[mm,nn]=size(fun);if mm>=8errorendxk=fun(1,:);fk=fun(2,:);a=min(xk);b=max(xk);n=mm-1;endif nargin==4xk=linspace(a,b,n+1);if isa(fun,'function_handle')fx=fun(xk);endendCk=cotescoeff(n);Ak=(b-a)*Ck;y=Ak*fx';function Ck=cotescoeff(n)for i=1:n+1k=i-1;Ck(i)=(-1)八(n-k)/factorial(k)/factorial(n-k)/n*quadl(@(t)intfun(t,n,k),0,n);endfunction f=intfun(t,n,k)f=1;for i=[0:k-1,k+1:n]f=f.*(t-i);end运行结果>> y=mulNewtonCotes(0,1,2,1)xk =0 0.5000 1.0000y =0.7314>> vpa(y,7)ans =.7313703>> y=mulNewtonCotes(0,1,5,2) xk =1.00000 0.2000 0.4000 0.6000 0.8000 y =0.7468>> vpa(y,7)ans =.746824>>龙贝格求积分function z=romberg(a,b,e)h=(b-a);f=@(x)exp(-x「2);TT(1,1)=h.*(f(b)+f(a))/2;k=2;TT(1,2)=TT(1,1)./2+h/2.*f(a+h/2);TT(2,1)=TT(1,2).*4/3-TT(1,1)./3;z=TT(2,1);while abs((TT(k,1)-TT(k-1,1))./TT(k,1))>=ek=k+1;h=h./2;for j2=1:2.A(k-2)ff(1,j2)=f(a+h*(j2-1/2));endfff=sum(ff).*h/2;TT(1,k)=TT(1,k-1)./2+ffffor j1=2:kTT(j1,k_j1 + 1)=4入(j1_1).*TT(j1_1,k_j1 + 2)./(4入(j1_1)_1)_TT(j1_1,k_j1 + 1) /(4八(j1 — 1)—1);z=TT(j1,k-j1+1);endendfunction r=f()r=@(x)exp(_x.A2)运算结果>> z=romberg(0,1,10e-2)z =0.7472>> vpa(z,7)ans =.7471804>> z=romberg(0,1,10e-5)TT =0.68390.73140.74300.747200TT =0.68390.73140.7430 0.74590.74720.7469000.7468000z =0.7468>> vpa(z,7)ans =.7468240>> z=romberg(0,1,10e-10)TT =0.68390.73140.74300.747200TT =0.68390.73140.74300.74590.74720.7469000.7468000TT =0.68390.73140.74300.74590.74660.74720.74690.7468000.74680.74680000.74680000TT =0.68390.73140.74300.74590.74660.74680.74720.74690.74680.7468000.74680.74680.74680000.74680.746800000.7468 0 0 0 0 0z =0.7468>> vpa(z,7)ans =.7468241四、结果分析根据牛顿柯斯特求积分的原理将所求函数的积分区间分为多个小的积分 区间,先求出每个小积分区间上的函数值,然后再将每个小区间上的求积结果加 起来就是我们所要求的总函数的积分值,当函数区间所分的小区间的个数越多的 时候总函数所计算出来的结果就精确,其原因就是所分的区间数越多,计算时每 个小区所带来的误差就越小,当将总的积分值加起来的时候所带来的总的误差也 就越小,所以最后的结果的精度越高,而用龙贝格求积和牛顿柯斯特也一样是要 将总区间分为很多小的相等的区间,只是他们所用的计算原理不一样,当用此方 法求积分时,所设的误差限越小,所求得的积分值就越是精确。

      五、设计心得自己完成六、参考文献[1] 孙祥,徐流美,吴清Matlabl 7.0基础教程【M】北京:清华大学出版社, 2005.[2] 薛毅数值分析与实验【M】•北京:北。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.