数学建模社区-数学中国
标题:
龙贝格求积法源代码,效率很好的
[打印本页]
作者:
maleesky
时间:
2005-4-1 16:34
标题:
龙贝格求积法源代码,效率很好的
<
>积分的源代码,效率很好的
5 K3 q/ I0 @- F
3 _& 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>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>=eps)&&(m<=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<=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<=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