📄 龙贝格积分.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 + -