cn700_vc3478524.txt

来自「用c语言编写的一个龙贝格积分算法.可在C++或DOC下实现.」· 文本 代码 · 共 64 行

TXT
64
字号
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
float x[100];
float f[100];
float a,b;
int n;

void trapezia(float y,float *S)
{    
    int i,t;
    t=(b-a)/y;
	for(i=0;i<=t;i++)
		x[i]=a+y*i;
	for(i=0;i<=t;i++)
	{
		f[i]=sin(x[i])/x[i];
		if(x[i]==0)
			f[i]=1;
	}
    (*S)=y*(f[0]+f[t])/2;
	for(i=1;i<t;i++)
		 (*S)+=(f[i]*y);
}

void longbig(int l,float *U)
{
     float h; 
	 float *S;
     float T[20],R[20];
     S=R;
     int i,j;
     h=b-a;
     for(i=0;i<=l;i++)
	 {
		 trapezia(h/pow(2,i),S);
         T[i]=*S;
	 }
      for(j=l;j>0;j--)
         for(i=0;i<j;i++)
             T[i]=T[i+1]+((T[i+1]-T[i])/(pow(4,(l-j+1))-1));
     (*U)=T[0];
}


void main()
{
    float p,q;
	float H[1];
	int m;
	printf("请输入积分上限\n");
	scanf("%f",&b);
	printf("请输入积分下限\n");
    scanf("%f",&a);
	printf("采用多少节点定步长复化梯形公式?\n");
	scanf("%d",&n);
    q=(log(n-1))/(log(2));
	m=int(q+0.5);
    longbig(m,H);
    p=H[0];
	printf("积分结果为\n");
    printf("%f\n",p);
}

⌨️ 快捷键说明

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