8数值积分与数值微分..docVIP

  • 5
  • 0
  • 约9.15千字
  • 约 12页
  • 2016-12-31 发布于重庆
  • 举报
8 数值积分与数值微分 8.1 例题解答 例 8.1 给定积分,分别用梯形公式、公式、公式作近似计算. 解: 先输入主要初始参数 a=0.5; b=1; f=inline(x^(1/2)); %梯形公式 I1=(b-a)/2*(feval(f,a)+feval(f,b)) I1 = 0.426776695296637 %simpson公式 I2=(b-a)/6*(feval(f,a)+4*feval(f,(a+b)/2)+feval(f,b)) I2 = 0.430934033027025 %Cotes公式(n=4) tc=0; C0=[7 32 12 32 7]; for i=0:4 tc=tc+C0(i+1)*feval(f,a+i*(b-a)/4); end I3=(b-a)/90*tc I3 = 0.430964070495876 %准确值 I=int(char(f),a,b) vpa(I) I = -1/6*2^(1/2)+2/3 ans = 0.43096440627115082519971854596505 例 8.2 对积分,为使其精度达到. 若用复化梯形公式,应将[0,1]多少等分? 若用复化公式,应将[0,1]多少等分? 解: 直接按余项计算即可. 复化梯形公式的余项为: 复化公式余项为: 对于,在课本中我们已证得以下不等式成立: 直接利用上述不等式关系解答本题. 先输入误差精度: Eps=1E-4 Eps = 1.000000000000000e-004 复化梯形公式 h1=sqrt(Eps/abs(-(1-0)/12*1/(2+1))) %先求出步长 h1 = 0.060000000000000 N1=ceil(1/h1) %向上取整,得到等分区间数 N1 = 17 故可将区间17等分即可达到所要求的精度. (2) 复化公式 h2=power(Eps/abs(-(1-0)/180*1/(1+4)),1/4) %先求出步长 h2 = 0.547722557505166 N2=ceil(1/h2) %向上取整,得到等分区间数 N2 = 2 故可将区间2等分即可达到所要求的精度. 扩展: Matlab中复化梯形公式命令为I=trapz(x,y),复化公式命令为quad(). Matlab中有四个取整函数,分别为ceil(),floor(),fix(),round(),分别表示向正无穷大方向取整、向负无穷大方向取整、向靠近零方向舍入和四舍五入. 例 8.3 对积分,利用变步长方法求其近似值,使其精度达到. 解: 利用变步长法前先建立三种变步长复化积分公式的函数. 注意在Matlab中直接用sin(0)/0得不到1,,因此解此题时我们改用求极限的方法得到函数值,此函数名为limit(). 先建立三种复化公式的函数文件,它们分别为复化梯形公式trap.m、复化公式为simpson.m、公式为cotes.m,三个函数的源程序如下: 复化梯形公式trap.m function T=trap(f,a,b,n) %trap.m %复化梯形公式求积分值 %f为积分函数 %[a,b]为积分区间 %n是等分区间份数 h=(b-a)/n;%步长 T=0; for k=1:(n-1) x0=a+h*k; T=T+limit(f,x0); end T=h*(limit(f,a)+limit(f,b))/2+h*T; T=double(T); (2) 复化公式simpson.m: function S=simpson(f,a,b,n) %simpson.m %Simpson公式求积分值 %f为积分函数 %[a,b]为积分区间 %n是等分区间份数 h=(b-a)/(2*n);%步长 s1=0; s2=0; for k=1:n x0=a+h*(2*k-1); s1=s1+limit(f,x0); end for k=1:(n-1) x0=a+h*2*k; s2=s2+limit(f,x0); end S=h*(limit(f,a)+limit(f,b)+4*s1+2*s2)/3; S=double(S); (3) 复化公式cotes.m: function C=cote(f,a,b,n) %cote.m %复化cotes公式求积分值 %f为积分函数 %[a,b]为积分区间 %n是等分区间份数 h=(b-a)/n;%步长 C=0; for i=1:(n-1) x0=a+i*h; C=C+14*limi

文档评论(0)

1亿VIP精品文档

相关文档