文档详情

数值分析实验报告4..doc

发布:2017-01-13约7.4千字共10页下载文档
文本预览下载声明
实验名称 数值积分与数值微分 目的和意义 1、深刻认识数值积分法的意义; 2、明确数值积分精度与步长的关系; 3、根据定积分的计算方法,可以考虑二重积分的计算问题。 计算公式 复化梯形公式: 复化Simpson公式: 结构程序设计 先建立两种复化公式的函数文件,即复化梯形公式为trap.m、复化Simpson公式为simpson.m,两个函数的源程序如下: (1)复化梯形公式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公式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); 用复化梯形公式和复化Simpson公式计算积分值,程序设计如下: syms x; f=sym(********); %被积a=********;b=********;%积分限 n=;%作1,2,3,…,次区间等分 %复化梯形公式 T=zeros(n,1); for i=1:n T(i)=trap(f,a,b,i); end %复化Simpson公式; S=zeros(n,1); for i=1:n S(i)=simpson(f,a,b,i); end 编写Romberg积分法的函数M文件romberg.m,源程序如下: function [I,T]=romberg(f,a,b,n,Eps) %Romberg积分计算 %f为积分函数 %[a,b]为积分区间 %n+1是T数表的列数目 %Eps为迭代精度 %返回值中I为积分结果,T是积分表 if nargin5 Eps=1E-6; end m=1; h=(b-a); err=1; j=0; T=zeros(4,4); T(1,1)=h*(limit(f,a)+limit(f,b))/2; while ((errEps) (jn))| (j4) j=j+1; h=h/2; s=0; for p=1:m x0=a+h*(2*p-1); s=s+limit(f,x0); end T(j+1,1)=T(j,1)/2+h*s; m=2*m; for k=1:j T(j+1,k+1)=T(j+1,k)+(T(j+1,k)-T(j,k))/(4^k-1); end err=abs(T(j,j)-T(j+1,k+1)); end I=T(j+1,j+1); if nargout==1 T=[]; end 用Romberg算法计算积分值,程序设计如下: syms x;%创建符号变量 f=sym()%符号函数 [I,T]=rombg(f,0,1,3,1E-6)%积分计算format long syms x; f=sym((4-sin(x)*sin(x))^(1/2)); a=0;b=pi/4; n=20; %复化梯形公式 T=zeros(n,1); for i=1:n T(i)=trap(f,a,b,i); end %复化Simpson公式; S=zeros(n,1); for i=1:n S(i)=simpson(f,a,b,i); end %准确值 I=int(f,a,b); I=double(I); %画图作出直观观察 x=[]; x=1:n; figure; plot(x,ones(1,n)*I,-); hold on; plot(x,T,r--,LineWidth,2); plot(x,S,m.-,LineWidth,1); grid on; title(两种复化公式积分效果对比图); legend(准确值曲线,复化梯形公式,复化Sim
显示全部
相似文档