龙贝格求积法源代码,效率很好的
<P>积分的源代码,效率很好的//////////////////////////////////////////////////////////////////////
// 龙贝格求积法
//
// 调用时,须覆盖计算函数f(x)值的虚函数double Func(double x)
//
// 参数:
// 1. a - Double型变量,积分下限
// 2. b - Double型变量,积分上限,要求b>a
// 3. eps - Double型变量,积分精度要求
//
// 返回值:double 型,积分值
//////////////////////////////////////////////////////////////////////
double Integral_Romberg(double a, double b, double eps /*= 0.000001*/)
{
int m,n,i,k;
double y,h,ep,p,x,s,q;</P>
<P> // 迭代初值
h=b-a;
y=h*(Func(a)+Func(b))/2.0;
m=1;
n=1;
ep=eps+1.0;
// 迭代计算
while ((ep>=eps)&&(m<=9))
{
p=0.0;
for (i=0;i<=n-1;i++)
{
x=a+(i+0.5)*h;
p=p+Func(x);
}
p=(y+h*p)/2.0;
s=1.0;
for (k=1;k<=m;k++)
{
s=4.0*s;
q=(s*p-y)/(s-1.0);
y=p; p=q;
}</P>
<P> ep=fabs(q-y);
m=m+1;
y=q;
n=n+n;
h=h/2.0;
}
return(q);
}</P>
页:
[1]