小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

編程實(shí)現(xiàn)數(shù)值積分的幾種

 dwlinux_gs 2014-09-15

復(fù)化梯形公式

 


    在區(qū)間 編程實(shí)現(xiàn)數(shù)值積分的幾種--復(fù)化梯形公式方法 c語(yǔ)言 - yijiuzai - yijiuzai的博客不大時(shí) , 用梯形公式、辛卜生公式計(jì)算定積分是簡(jiǎn)單實(shí)用的 , 但當(dāng)區(qū)間 編程實(shí)現(xiàn)數(shù)值積分的幾種--復(fù)化梯形公式方法 c語(yǔ)言 - yijiuzai - yijiuzai的博客較大時(shí) , 用梯形公式、辛卜生公式計(jì)算定積分達(dá)不到精確度要求 . 為了提高計(jì)算的精確度,我們將 [a,b] 區(qū)間n等分,在每個(gè)小區(qū)間上應(yīng)用梯形公式、辛卜生公式計(jì)算定積分,然后將其結(jié)果相加,這樣就得到了復(fù)化梯形公式和復(fù)化辛卜生公式。

1. 復(fù)化梯形公式

將積分區(qū)間 編程實(shí)現(xiàn)數(shù)值積分的幾種--復(fù)化梯形公式方法 c語(yǔ)言 - yijiuzai - yijiuzai的博客編程實(shí)現(xiàn)數(shù)值積分的幾種--復(fù)化梯形公式方法 c語(yǔ)言 - yijiuzai - yijiuzai的博客等分 , 設(shè) 編程實(shí)現(xiàn)數(shù)值積分的幾種--復(fù)化梯形公式方法 c語(yǔ)言 - yijiuzai - yijiuzai的博客, 則節(jié)點(diǎn)為 編程實(shí)現(xiàn)數(shù)值積分的幾種--復(fù)化梯形公式方法 c語(yǔ)言 - yijiuzai - yijiuzai的博客

對(duì)每個(gè)小區(qū)間上應(yīng)用梯形公式 , 然后將其結(jié)果相加,則得

編程實(shí)現(xiàn)數(shù)值積分的幾種--復(fù)化梯形公式方法 c語(yǔ)言 - yijiuzai - yijiuzai的博客(3.14)

稱(chēng) (3.14) 式為復(fù)化梯形公式 .

當(dāng) 編程實(shí)現(xiàn)數(shù)值積分的幾種--復(fù)化梯形公式方法 c語(yǔ)言 - yijiuzai - yijiuzai的博客在 [a,b] 上有連續(xù)的二階導(dǎo)數(shù)時(shí),則復(fù)化梯形公式 (3.14) 的余項(xiàng)推導(dǎo)如下:

因?yàn)?

編程實(shí)現(xiàn)數(shù)值積分的幾種--復(fù)化梯形公式方法 c語(yǔ)言 - yijiuzai - yijiuzai的博客

所以在區(qū)間 [a,b] 上公式 (3.14) 的誤差為

編程實(shí)現(xiàn)數(shù)值積分的幾種--復(fù)化梯形公式方法 c語(yǔ)言 - yijiuzai - yijiuzai的博客

又因?yàn)?編程實(shí)現(xiàn)數(shù)值積分的幾種--復(fù)化梯形公式方法 c語(yǔ)言 - yijiuzai - yijiuzai的博客在區(qū)間 [a,b] 上連續(xù),由連續(xù)函數(shù)的性質(zhì)知,在區(qū)間 [a,b] 上存在一點(diǎn) 編程實(shí)現(xiàn)數(shù)值積分的幾種--復(fù)化梯形公式方法 c語(yǔ)言 - yijiuzai - yijiuzai的博客,

編程實(shí)現(xiàn)數(shù)值積分的幾種--復(fù)化梯形公式方法 c語(yǔ)言 - yijiuzai - yijiuzai的博客

于是

編程實(shí)現(xiàn)數(shù)值積分的幾種--復(fù)化梯形公式方法 c語(yǔ)言 - yijiuzai - yijiuzai的博客( 3.15 )

 

 

復(fù)化梯形公式,復(fù)化拋物線(xiàn)公式和Romberg求積法的算法程序:

以下程序均定義誤差限為1*10^-5;

1)復(fù)化梯形公式:

#include <stdio.h>
#include <math.h>
#define e 1e-5
#define a 0                          //積分下限a
#define b 1                          //積分上限b
#define f(x) (4/(1+(x*x)))           //被積函數(shù)f(x)
int main()
{
    int i,n;
    double h,t0,t,g;
    n=1;                             //賦初值
    h=(double)(b-a)/2;
    t=h*(f(a)+f(b));
    do                             
    {
       t0=t;           
       g=0;
       for (i=1;i<=n;i++)
           g+=f((a+(2*i-1)*h));
       t=(t0/2)+(h*g);                //復(fù)化梯形公式
       n*=2;
       h/=2;
    }
    while (fabs(t-t0)>e);             //自定義誤差限e
    printf("%.8lf",t);                //輸出積分的近似值
  
return 0;
}

 

 

2)復(fù)化拋物線(xiàn)公式:

#include <stdio.h>
#include <math.h>
#define e 1e-5
#define a 0                          //積分下限a
#define b 1                          //積分上限b
#define f(x) (4/(1+(x*x)))           //被積函數(shù)f(x)
int main()
{
    int i,n;
    double f1,f2,f3,h,s0,s;
    f1=f(a)+f(b);                     //賦初值
    f2=f(((double)(b+a)/2));
    f3=0;
    s=((double)(b-a)/6)*(f1+4*f2);
    n=2;
    h=(double)(b-a)/4;
    do                                //復(fù)化拋物線(xiàn)算法
    {
                      f2+=f3;
                      s0=s;
                      f3=0;
                      for (i=1;i<=n;i++)
                          f3+=f((a+(2*i-1)*h));
                      s=(h/3)*(f1+2*f2+4*f3);
                      n*=2;
                      h/=2;
  
    }
    while (fabs(s-s0)>e);               //自定義誤差限
    printf("%.8lf",s);
  
    return 0;
}

3)Romberg求積法:

#include <stdio.h>
#include <math.h>
#define e 1e-5
#define a 0                          //積分下限a
#define b 1                          //積分上限b
#define f(x) (4/(1+(x*x)))           //被積函數(shù)f(x)
double t[100][100];
int main()
{
    int n,k,i,m;
    double h,g,p;
    h=(double)(b-a)/2;
    t[0][0]=h*(f(a)+f(b));
    k=1;
    n=1;
    do                                //Romberg算法
    {
        g=0;
        for (i=1;i<=n;i++)
            g+=f((a+((2*i-1)*h)));
        t[k][0]=(t[k-1][0]/2)+(h*g);
        for (m=1;m<=k;m++)
        {
            p=pow(4,(double)(m));
            t[k-m][m]=(p*t[k-m+1][m-1]-t[k-m][m-1])/(p-1);
        }
        m-=1;
        h/=2;
        n*=2;
        k+=1;
    }
    while (fabs(t[0][m]-t[0][m-1])>e);      //自定義誤差限e
    printf("%.8lf",t[0][m]);
  
    return 0;
}

給定精度,定義誤差限為1*10^-5,分別求出步長(zhǎng)的先驗(yàn)估計(jì)值:用復(fù)化梯形公式計(jì)算,要求h<0. 007746。用復(fù)化拋物線(xiàn)公式計(jì)算,要求h<0.131607。而實(shí)際上,在運(yùn)用后驗(yàn)估計(jì)的程序中,以相同的精度,得到的復(fù)化梯形步長(zhǎng)為h= 0.003906,得到的復(fù)化拋物線(xiàn)步長(zhǎng)為h=0.0625,它們大致上分別為先驗(yàn)估計(jì)值的一半,符合要求。

在實(shí)踐中比較上體三種算法的計(jì)算量,當(dāng)取相同精度1*10^-5時(shí),復(fù)化梯形調(diào)用函數(shù)f257次,孵化拋物線(xiàn)公式調(diào)用函數(shù)f17次,Romberg算法調(diào)用函數(shù) f17次,從計(jì)算量上看,后兩者較小。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多