龙贝格算法的C语言小程序,可能是循环太多了,计算非常慢。。各位大神有没有什么优化加速的办法》 }
发布网友
发布时间:2022-04-29 12:11
我来回答
共1个回答
热心网友
时间:2023-10-05 15:44
#include<stdio.h>
#include<math.h>
#define f(x) (sin(x)/x)
#define N 20#define MAX 20
#define a 2
#define b 4
#define e 0.00001
float LBG(float p,float q,int n)
{ int i; float sum=0,h=(q-p)/n; for (i=1;i<n;i++)
sum+=f(p+i*h);
sum+=(f(p)+f(q))/2; return(h*sum);
}void main()
{ int i;
int n=N,m=0;
float T[MAX+1][2];
T[0][1]=LBG(a,b,n);
n*=2;
for(m=1;m<MAX;m++)
{ for(i=0;i<m;i++)
T[i][0]=T[i][1];
T[0][1]=LBG(a,b,n);
n*=2;
for(i=1;i<=m;i++)
T[i][1]=T[i-1][1]+(T[i-1][1]-T[i-1][0])/(pow(2,2*m)-1);
if((T[m-1][1]<T[m][1]+e)&&(T[m-1][1]>T[m][1]-e))
{ printf("Answer=%f\n",T[m][1]); getch();
return ;
}
}
}