maleesky 发表于 2005-4-1 16:34

龙贝格求积法源代码,效率很好的

<P>积分的源代码,效率很好的


//////////////////////////////////////////////////////////////////////
// 龙贝格求积法
//
// 调用时,须覆盖计算函数f(x)值的虚函数double Func(double x)
//
// 参数:
// 1. a - Double型变量,积分下限
// 2. b - Double型变量,积分上限,要求b&gt;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&gt;=eps)&amp;&amp;(m&lt;=9))
    {
  p=0.0;
        for (i=0;i&lt;=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&lt;=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]
查看完整版本: 龙贝格求积法源代码,效率很好的