公式:看图片。
源码:
class gethc
{
int n;
double pi,y,e,ff;
if (k<0.0) k=-k;
if (k>1.0) k=1.0/k;
pi=3.1415926; y=Math.abs(f);
n=0;
while (y>=pi)
{ n=n+1; y=y-pi;}
e=1.0;
if (y>=pi/2.0)
{ n=n+1; e=-e; y=pi-y;}
if (n==0)
ff=ek(k,y);
else
{ ff=ek(k,pi/2.0);
ff=2.0*n*ff+e*ek(k,y);
}
if (f<0.0) ff=-ff;
return(ff);
}
//ek(double2)高斯-勒让德法求积分
double ek(double k,double f)
{
int m,i,j;
double s,p,ep,h,aa,bb,w,xx,g,q;
final double[] t={-0.9061798459,-0.5384693101,0.0,
0.5384693101,0.9061798459};//5介勒让德多项式在区间[-1,1]上的5个零点值
final double[] c={0.2369268851,0.4786286705,0.5688888889,
0.4786286705,0.2369268851};//对应的求积系数
m=1; g=0.0;
h&#