⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 龙贝格积分.cpp

📁 龙贝格积分法求解数值积分
💻 CPP
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -