数值分析:复化公式求解定积分

复化公式求解定积分

用熟悉的计算机语言编程上机完成
(1)用复化梯形公式、复化Simpson公式和复化Cotes公式计算积分,自己设置不同精度要求,对结果进行比较分析。
(2)用Romberg积分法计算积分,自己设置不同精度要求,对结果进行比较分析。
(3)记f(x)=sin x/x,在上面的计算中f(x)只取4位有效数字或7位有效数字,计算结果又有什么不同。
(4)上面计算精度可达8-20位有效数字吗?若可以,请说明实现过程,并举例。

理论基础
数值分析:复化公式求解定积分_第1张图片
数值分析:复化公式求解定积分_第2张图片
数值分析:复化公式求解定积分_第3张图片
数值分析:复化公式求解定积分_第4张图片
数值分析:复化公式求解定积分_第5张图片
数值分析:复化公式求解定积分_第6张图片
我们通过编写好的matlab源程序,直接调用函数可得复化公式所得结果。通过改变区间等分数n的值来得到不同精度的结果,再把多个结果汇总制作表格和散点图进行分析比较

function y=f(x) 
y=sin(x)/(x);
if x==0;
    y=1;
else
    y=sin(x)/(x);
end
%1.复化梯形求积公式的代码
function Tn=Tn(a,b,n)
   format  long
    h=(b-a)/n;
    sum=0;
    for k=1:n-1
        sum=sum+f(a+k.*h);
    end
    Tn=(f(a)+2*sum+f(b))*h/2;
  End
%2.复化Simpson公式的代码
function Sn = Sn(a,b,n)
    format long
    h = (b-a)/n;
    sum1 = 0;
    sum2 = 0;
    for i = 0:n-1
        sum1 = sum1 + f(a+(i+1/2).*h);
    end
    for j = 1:n-1
        sum2 = sum2 + f(a+j.*h);
    end
    Sn = h/6*(f(a)+4*sum1+2*sum2+f(b));
%3.复化Cotes公式的代码
function Cn = Cn(a,b,n)
    format long
    h = (b-a)/n;
    sum1 = 0;
    sum2 = 0;
    for i = 0:n-1
        sum1 = sum1 + 32*f(a+(i+1/4).*h)+12*f(a+(i+1/2).*h)+32*f(a+(i+3/4).*h);
    end
    for j = 1:n-1
        sum2 = sum2 + 14*f(a+j.*h);
    end
Cn = h/90*(7*f(a)+sum1+sum2+7*f(b));

数值分析:复化公式求解定积分_第7张图片

%%% Romberg积分法
clear
%%%积分区间
b=1;
a=0;
%%%精度要求
R=1e-7;%R=1e-7;
%%%应用梯形公式准备初值
T(1,1)=(b-a)*(f(b)+f(a))/2;
T(1,2)=T(1,1)/2+(b-a)/2*f((b+a)/2);
T(2,1)=(4*T(1,2)-T(1,1))/(4-1);
j=2;
m=2;
h=1;
%%%主程序体%%% 
while(abs(T(m,1)-T(m-1,1))>R);%%%精度控制
    j=j+1;
    s=0;
    for p=1:2^(j-2);
       s=s+f(a+(2*p-1)*h/(2^(j-1)));
    end
    T(1,j)=T(1,j-1)/2+h*s/(2^(j-1)); %%%梯形公式应用
    for m=2:j; 
      k=(j-m+1);
      T(m,k)=((4^(m-1))*T(m-1,k+1)-T(m-1,k))/(4^(m-1)-1);
    end
end
%%%给出 Romberg积分法的函数表
I=T(m,1)

此外,我们通过调用vpa()函数实现了控制输出了8-20位有效数字。
数值分析:复化公式求解定积分_第8张图片
(1)误差分析
由上表知,复化Cotes公式计算所得的误差最小,其次是复化辛普森公式,误差最大的是复化梯形公式。
(2)精确值比较
在达到相同精度的前提下,所需的等分数比较:复化梯形公式>复化Simpson公式>复化Cotes公式。在相同等分数的前提下,计算结果的精度比较:复化梯形公式<复化Simpson公式<复化Cotes公式。
(3)收敛性分析
三种复化求积公式的收敛速度比较:复化梯形公式<复化Simpson公式<复化Cotes公式
Remberg 0.946145882 0.946083004 0.94608307 0.94608307 0.94608307

(4)Romberg积分法 结果分析:当要求的计算精度不高时,复化梯形算法与Romberg算法计算时间相差不太大,但是Romberg算法是要快于复化梯形算法的;当要求的计算精度更高的时候,Romberg算法是明显快于复化梯形算法。Romberg积分法在达到相同精度的前提下大大节省了计算量,并且使用的节点更少。
(5)f(x)取8位有效数字得到的计算结果与f(x)取20位有效数字得到的计算结果.可以调用vpa()函数实现

你可能感兴趣的:(matlab)