数学建模社区-数学中国

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

作者: maleesky    时间: 2005-4-1 16:34
标题: 龙贝格求积法源代码,效率很好的
<>积分的源代码,效率很好的
# n+ o0 v1 h9 n8 P3 `
' [4 f- Y. r8 H5 r/ _$ [0 R% L0 u  q" v: o+ O
//////////////////////////////////////////////////////////////////////
9 H8 p* Z! L0 V% Q// 龙贝格求积法$ d0 z4 v7 T- y  A; ~
//
1 h, z; h2 v: `7 j3 ^" u! |- Y// 调用时,须覆盖计算函数f(x)值的虚函数double Func(double x)& s! G/ E) ?* `4 k4 I. t4 h* q
//2 V" q0 }/ D4 w$ F4 z2 x. t7 _# b
// 参数:
! F  j( U8 Y" A3 x. R$ D0 M// 1. a - Double型变量,积分下限% J5 ^# S/ E2 T$ f% t; R) R- n
// 2. b - Double型变量,积分上限,要求b&gt;a- a3 S, ~( t$ I: d/ u( f
// 3. eps - Double型变量,积分精度要求
1 a& j+ s6 o( X6 C# N& ?+ r//
' w  i, v. R- v5 \7 B# k+ U// 返回值:double 型,积分值
5 ]* Q2 i* s( l//////////////////////////////////////////////////////////////////////
8 |! q! p- x  L5 V7 ydouble Integral_Romberg(double a, double b, double eps /*= 0.000001*/), K' N+ t. Y7 h+ j
{
) E6 X0 P8 G& d5 Y( ^5 @    int m,n,i,k;
$ c% v  w* j6 g" v8 J    double y[10],h,ep,p,x,s,q;</P>
" @* |, }! L6 Q+ a+ _. y  l4 C<> // 迭代初值8 P7 _; r+ L1 K* ?" J9 T& a6 D
    h=b-a;
6 j) p) c( E' c" ]0 w7 [  ~    y[0]=h*(Func(a)+Func(b))/2.0;
; B' [! Z' J) L4 \/ d    m=1;
7 k4 @. K) o7 B n=1; , [& k) p- E8 n" R( r7 j9 A5 V
ep=eps+1.0;
& p1 D# |2 i! t    8 K9 f/ V2 y, }7 D: v$ X5 h
// 迭代计算9 S; R( m) J" }8 N+ y
while ((ep&gt;=eps)&amp;&amp;(m&lt;=9))! V- ~3 z6 E7 l( N
    { ! S7 O# |' C. t  i
  p=0.0;/ s! ^7 Z2 x$ O# K
        for (i=0;i&lt;=n-1;i++)0 R4 N. H/ d/ |) }" e/ ]
        {
' B3 o  _% M1 V$ F1 M# h+ b   x=a+(i+0.5)*h;
7 f0 t5 f2 y+ p            p=p+Func(x);
0 Y1 i8 b7 ]* s  m        }) C( Y3 P6 z/ N# j3 z
        
3 u# v" R- p; q7 i& A0 d% k  p=(y[0]+h*p)/2.0;
' j! Q$ e0 n* A        s=1.0;
! X# W7 }! ^8 ^  v' R0 j& X* C8 V        for (k=1;k&lt;=m;k++)7 {. L" \% y9 q1 G. v
        {
  h5 R6 A# H; M# o, l/ y   s=4.0*s;
% i! x/ O# d$ Z& ^" w            q=(s*p-y[k-1])/(s-1.0);
) B/ W6 `" h" m* O            y[k-1]=p; p=q;
) g8 p( Z' ~) X# |, h        }</P>
1 b( `( d' N' P% W; r& u<>        ep=fabs(q-y[m-1]);
, l& C8 V5 W; W3 ~3 A6 p1 k! f) S6 c        m=m+1; 3 Q% s! p- A( W2 b5 y
  y[m-1]=q;
2 d1 ?1 V, N2 m  n=n+n; 7 C+ O* {' x  n' e
  h=h/2.0;, X. C/ g3 }( r( r4 M+ k
    }
' D" [! e$ c: `% }9 t9 F- z- d; M   
0 T4 `; b+ Q4 X6 `0 q7 D, W return(q);1 Z" l  x' p4 x' c5 P6 n1 s
}</P>




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