main.cpp

来自「研究生期间上《数值计算方法》课的作业」· C++ 代码 · 共 48 行

CPP
48
字号
#include <iostream>
#include <stdlib.h>
#include<math.h>

using namespace std;

float fx(float x)     //积被函数  f(x) 
{   float f;
    f=4/(1+pow(x,2));
    return(f); 
}

int main(int argc, char *argv[])
{ 
    float s,r2,t[200][200],h,a,b,e,fz,fm;
    int i,m,k,j;
    float tmp;
    printf("输入下限:");    scanf("%f",&a);
    printf("输入上限:");    scanf("%f",&b);
    printf("输入精度 e:");  scanf("%f",&e);
    h=b-a;
    t[1][0]=h*(fx(a)+fx(b))/2;
    printf("%f\n",t[1][0]);
    k=1;
    while(1)
    {  s=0;
       tmp=pow(2.0,k-1);
       for(i=1;i<=tmp;i++)
         s=s+fx(a+(2*i-1)*(b-a)/pow(2.0,k));
       t[1][k]=(t[1][k-1]+(b-a)/pow(2.0,(k-1))*s)/2;
       printf("%f\t",t[1][k]);
       for(i=2;i<=k+1;i++)
           {   j=abs(i-k-1);
               fz=t[i-1][j+1]-(1/pow(4.0,(i-1)))*t[i-1][j];
               fm=1-(1/pow(4.0,(i-1)));
               t[i][j]=fz/fm;
               printf("%f\t",t[i][j]);
            }
       printf("\n");
      r2=fabs(t[i-1][j]-t[i-2][j+1]);
      if(r2<e)
          { printf("积分的近似值是:%f",t[i-1][j]);    break; }
      k++;       
     }        
    system("PAUSE");
    return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?