数学建模社区-数学中国

标题: 龙贝格求积法源代码,效率很好的 [打印本页]

作者: maleesky    时间: 2005-4-1 16:34
标题: 龙贝格求积法源代码,效率很好的
<>积分的源代码,效率很好的
5 K3 q/ I0 @- F3 _& L+ W+ i8 t
7 g: ?5 W5 e! _: F+ y) W
//////////////////////////////////////////////////////////////////////5 R) I" P) W. p0 j) h; q* K* x( Z
// 龙贝格求积法
1 u3 V- F4 [5 ?//  j3 i( V8 c/ \' W& G
// 调用时,须覆盖计算函数f(x)值的虚函数double Func(double x)6 |1 z/ s$ U3 K: L+ \) ?
//- l" l% Z  Z, D
// 参数:
: e7 x9 p4 i, \! w4 a// 1. a - Double型变量,积分下限/ e9 i# g2 @6 L3 R3 \
// 2. b - Double型变量,积分上限,要求b&gt;a
8 w0 K  @& S: G5 h+ D// 3. eps - Double型变量,积分精度要求6 |+ L: X8 P, J% l) V* F- ~
//: _% v7 q+ i) k" A
// 返回值:double 型,积分值
( C/ A3 G  Z: F//////////////////////////////////////////////////////////////////////+ o4 m, d2 z) M$ E2 n
double Integral_Romberg(double a, double b, double eps /*= 0.000001*/)3 j& h( E' G0 I& s& V1 K
{ ! _9 D; @  [  n! @$ j
    int m,n,i,k;
4 S( |4 a, q( g, u: N    double y[10],h,ep,p,x,s,q;</P>9 x5 G- v2 [9 Q6 c  h7 j( l
<> // 迭代初值' K! w/ }4 x- ^2 L7 u
    h=b-a;8 j6 @% J$ ^  l* w  u4 M
    y[0]=h*(Func(a)+Func(b))/2.0;; A) ^- V/ z, A4 F! D8 T! Z
    m=1; & z$ ~, ^+ e7 n7 o+ W& O
n=1; 8 ?1 U+ j$ }% f0 G0 a2 n2 w
ep=eps+1.0;
2 ?- N; N5 E5 o  J" N   
7 T) _+ {* i+ z // 迭代计算
' s" ?6 j4 v8 |( P0 R while ((ep&gt;=eps)&amp;&amp;(m&lt;=9)): v& O- P  K% s! Q* H
    { ! v" i, E& r8 l: c- C! `
  p=0.0;1 f2 H- h. d# ~8 x
        for (i=0;i&lt;=n-1;i++)4 h# w8 A. B: d4 Z# i5 h# ^  s) L
        { , S) l& s4 b8 b. A3 _
   x=a+(i+0.5)*h;7 r' a8 _1 t1 H' ]
            p=p+Func(x);
  U3 }8 [/ A7 g: V+ f        }2 j; @( `% |) E3 A3 d
        
$ T" |9 @& F2 ?) k) H7 B  p=(y[0]+h*p)/2.0;! X& g" Z; H! z5 v' R
        s=1.0;
6 B+ i/ K; g7 `( O3 S2 `' M        for (k=1;k&lt;=m;k++)8 n4 _' J6 m# W0 s
        { 7 S7 A2 Q9 N5 Y, E$ ]& f
   s=4.0*s;/ x( A( v& |3 _+ w# K, @6 X5 g7 I
            q=(s*p-y[k-1])/(s-1.0);/ M. P$ ]% K  w6 P  p" c
            y[k-1]=p; p=q;
4 z. V9 k* ^* `% {! Y1 c: U- P        }</P>
3 J9 `+ t1 ], }% d# J* T+ P<>        ep=fabs(q-y[m-1]);- t: R% N( I! L( W+ o& [; {
        m=m+1;
* a  P  s' |- |2 Q4 n# h  y[m-1]=q; 4 N; h. a: r8 n2 B" T
  n=n+n; : `; T. E5 l( f. b
  h=h/2.0;
5 M7 _5 v- F4 e* x( B1 s    }! k- b+ w. }+ p' a+ `0 _& T! U
      h/ a$ N  a1 n
return(q);
. |& l: c* I* U* D}</P>




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5