Prog Numerically

download Prog Numerically

of 57

Transcript of Prog Numerically

  • 7/27/2019 Prog Numerically

    1/57

    P r o g r a m s a n d L i s t i n g s

    I n t r o d u c t i o n

    I t i s t h e i n t e n t i o n i n t h i s A d d e n d a t o p r o v i d e t h e r e a d e r o f m y b o o k

    \ N u m e r i c a l M e t h o d s f o r L a p l a c e T r a n s f o r m I n v e r s i o n " w i t h a v a r i -

    e t y o f p r o g r a m s t o e v a l u a t e t h e i n v e r s e L a p l a c e t r a n s f o r m . T h e o n l y

    r e q u i r e m e n t i s t h e a b i l i t y t o w r i t e s i m p l e F o r t r a n r o u t i n e s t o e v a l -

    u a t e t h e t r a n s f o r m f u n c t i o n

    f ( s ) . A s a g e n e r a l r u l e t h e p r o g r a m s

    r e q u i r e t h e u s e o f d o u b l e p r e c i s i o n a r i t h m e t i c - t h i s i s p a r t i c u l a r l y

    t h e c a s e w i t h N A G l i b r a r y r o u t i n e s - b u t b e c a u s e t h e e x t r a p o l a -

    t i o n m e t h o d s u s e d i n v o l v e a l o t o f c a n c e l l a t i o n i t i s p r e f e r a b l e t o

    w o r k w i t h m u l t i - p r e c i s i o n a r i t h m e t i c . I t h a s b e e n t h e p o l i c y o f t h e

    a u t h o r t o i n d i c a t e d o u b l e / m u l t i p l e p r e c i s i o n v a r i a b l e s b y u s i n g t h e

    t e r m r e a l , t h a t i s r e a l i n b o l d c h a r a c t e r s , a n d a l s o t o i n d i c a t e c o n -

    s t a n t s o f t h i s f o r m b y w r i t i n g t h e m i n b o l d t y p e . T h u s 0 . 0 1 w o u l d

    r e p r e s e n t 1 d - 2 i n d o u b l e p r e c i s i o n o r 1 q - 2 i n q u a d r u p l e p r e c i s i o n

    a n d 1 0

    1 0

    w o u l d r e p r e s e n t 1 d - 1 0 o r 1 q - 1 0 . S i m i l a r l y , c o m p l e x r e p -

    r e s e n t s d o u b l e / m u l t i p l e p r e c i s i o n c o m p l e x v a r i a b l e s . L i k e w i s e e x p

    r e p r e s e n t s d e x p i n d o u b l e p r e c i s i o n a n d q e x p i n q u a d r u p l e p r e c i s i o n

    a n d i n d i c a t e s t h a t t h e e x p o n e n t i a l o p e r a t i o n w i l l p r o d u c e n u m e r i c a l

    r e s u l t s w h i c h a r e c o m p a t i b l e w i t h t h e v a r i a b l e d e c l a r a t i o n . S i m i -

    l a r l y f o r s i n , c o s , a b s , o a t , a n d s o o n . F o r s o m e f u n c t i o n s w e

    h a v e u s e d t h e g e n e r i c n a m e i n t h e p r o g r a m . E x a m p l e s o f t h i s a r e

    m a x , m i n a n d i x w h e r e , d e p e n d i n g o n t h e c o m p u t e r u s e d a n d t h e

    c o n t e x t w e m i g h t r e q u i r e d m a x 1 , d m i n 1 o r j i x r e s p e c t i v e l y | o r

    s o m e s i m i l a r f u n c t i o n n a m e s .

    W e n o w g i v e e x a m p l e s o f v a r i o u s p r o g r a m s a n d t h e i r s p e c i c a t i o n s .

    I t s h o u l d b e b o r n e i n m i n d t h a t t h e p a r a m e t e r s n e e d e d t o o p e r a t e

    s o m e p r o g r a m s n e e d c a r e f u l c h o o s i n g a n d i t w o u l d b e a d v i s a b l e t o

    r e r u n t h e p r o g r a m s w i t h a l t e r n a t i v e p a r a m e t e r s e t t i n g s . W h i l e t h e

    a u t h o r h a s a t t e m p t e d t o w r i t e o p t i m a l p r o g r a m s f o r r o u t i n e s w h i c h

    h a v e n o t b e e n p u b l i s h e d t h i s o b j e c t i v e m i g h t n o t h a v e b e e n a c h i e v e d

    i n a l l c a s e s . A d d i t i o n a l l y , t h e u s e r h a s t o b e a w a r e o f t h e f a c t , e s -

    p e c i a l l y w h e n s u p p l y i n g

    f ( s ) w h i c h i s t o b e e v a l u a t e d f o r c o m p l e x

    v a l u e s o f s , o f t h e n e e d t o d e t e r m i n e t h e p r i n c i p a l v a l u e o f

    f ( s ) .

    A l s o i n c l u d e d i n t h i s C h a p t e r a r e t w o M a t h e m a t i c a p r o g r a m s . S o m e

    a d d i t i o n a l M a t h e m a t i c a p r o g r a m s c a n b e f o u n d f r o m t h e p a c k a g e

    L a p l a c e A n d z T r a n s f o r m s | s e e G r a f [ 5 ] . F u r t h e r d e t a i l s r e l a t i n g t o

    t h e N A G p r o g r a m s c a n b e f o u n d a t t h e i r w e b s i t e [ 9 ] .

    1

  • 7/27/2019 Prog Numerically

    2/57

    P r o g r a m f o r W e e k s ' s m e t h o d

    T h i s i s b a s e d o n t h e p a p e r b y G a r b o w e t a l [ 4 ] w h i c h d e t e r m i n e s a

    L a g u e r r e s e r i e s a p p r o x i m a t i o n

    ~

    f ( t ) t o f ( t ) o f t h e f o r m

    ~

    f ( t ) = e

    t

    m 1

    i = 0

    a

    i

    e

    b t = 2

    L

    i

    ( b t ) ; >

    0

    ; b > 0

    w h e r e

    0

    ( = ) i s t h e a b s c i s s a o f t h e s i n g u l a r i t y o f

    f ( s ) w h i c h i s f u r -

    t h e s t f r o m

    s = 0 . N A G r o u t i n e C 0 6 L B F c o m p u t e s t h e c o e c i e n t s

    a

    i

    a n d t h e r o u t i n e C 0 6 L C F e v a l u a t e s t h e e x p a n s i o n f o r s p e c i e d t .

    E n t r y / E x i t P a r a m e t e r s

    1 . f | c o m p l e x f u n c t i o n t o b e s u p p l i e d b y u s e r . f m u s t r e t u r n

    t h e v a l u e o f t h e L a p l a c e t r a n s f o r m

    f ( s ) f o r g i v e n s .

    2 . s i g m a o | r e a l . T h e v a l u e o f

    0

    .

    3 . s i g m a | r e a l , t h e p a r a m e t e r o f t h e L a g u e r r e e x p a n s i o n . I t

    i s r e p l a c e d b y

    0

    + 0 : 7 o n e x i t i f <

    0

    .

    4 . b | r e a l . I f b

  • 7/27/2019 Prog Numerically

    3/57

    a r e t o b e r e a d i n t o t h e c o m p u t e r .

    c T h i s i s a n a p p l i c a t i o n o f N A G L i b r a r y R o u t i n e s C 0 6 L B F / C 0 6 L C F

    i n t e g e r n m a x , n o u t

    p a r a m e t e r ( n m a x = 5 1 2 , n o u t = 6 )

    r e a l b , e p s t o l , e x a c t , n v , p s e r r , s i g m a , s i g m a o , t

    i n t e g e r i f a i l , j , m

    r e a l a c o e f ( n m a x ) , e r r v e c ( 8 )

    e x t e r n a l C 0 6 L B F , C 0 6 L C F

    c o m p l e x f

    e x t e r n a l f

    s i g m a o = 0 . 1

    e p s t o l = 0 . 0 0 0 0 1

    i f a i l = 0

    c a l l C 0 6 L B F ( f , s i g m a o , s i g m a , b , e p s t o l , n m a x , m , a c o e f , e r r v e c , i f a i l )

    w r i t e ( n o u t , 9 9 9 ) ` n u m b e r o f c o e c i e n t s = ' , m

    w r i t e ( n o u t , * ) ` t f ( t ) '

    r e a d ( 5 , * ) n

    c r e a d s n u m b e r o f v a l u e s o f t a t w h i c h f ( t ) r e q u i r e d

    d o i = 1 , n

    r e a d ( 5 , * ) t

    c a l l C 0 6 L C F ( t , s i g m a , b , m , a c o e f , e r r v e c , n v , i f a i l )

    w r i t e ( n o u t , 9 9 8 ) t , n v

    e n d d o

    s t o p

    9 9 9 f o r m a t ( 1 x , a , i 6 )

    9 9 8 f o r m a t ( 1 x , 1 p , d 1 0 . 2 , d 1 5 . 4 )

    e n d

    c o m p l e x f u n c t i o n f ( s )

    c

    f ( s ) i s t h e t r a n s f o r m o f J

    0

    ( t )

    c o m p l e x s , z

    r e a l p r , p i , q r , q i

    e x t e r n a l A 0 2 A A F

    c T h e N A G r o u t i n e A 0 2 A A F e v a l u a t e s c o m p l e x s q u a r e r o o t s

    z = s * s + 1

    p r = r e a l ( z )

    3

  • 7/27/2019 Prog Numerically

    4/57

    p i = i m a g ( z )

    c a l l A 0 2 A A F ( p r , p i , q r , q i )

    z = c m p l e x ( q r , q i )

    f = ( 1 . 0 ) / z

    r e t u r n

    e n d

    4

  • 7/27/2019 Prog Numerically

    5/57

    P a d e T a b l e C o n s t r u c t i o n b y m e t h o d o f L o n g m a n

    T h e p r o g r a m L O N G P A D

    G i v e n a s e r i e s

    g ( s ) = a

    0

    + a

    1

    s + a

    2

    s

    2

    +

    + a

    n

    s

    n

    +

    t h e p r o g r a m L O N G P A D d e t e r m i n e s t h e P a d e a p p r o x i m a n t s

    0

    +

    1

    s +

    +

    p

    s

    p

    0

    +

    1

    s +

    +

    q

    s

    q

    ;

    f o r 0

    p ; q

    [ ( n

    1 ) = 2 ] :

    E n t r y / E x i t P a r a m e t e r s

    1 . n | i n t e g e r . T h i s s h o u l d b e a n o d d n u m b e r a n d d e c l a r e d a s a

    p a r a m e t e r .

    2 . a ( i ) | r e a l . T h e s e a r e t h e c o e c i e n t s i n t h e s e r i e s w h i c h h a v e

    t o b e p r o v i d e d b y t h e u s e r .

    3 . b ( i , j , k ) | r e a l a r r a y . O n e x i t w i l l c o r r e s p o n d t o t h e

    k

    o f

    t h e [ i = j ] P a d e a p p r o x i m a n t .

    4 . g ( i , j , k ) | r e a l a r r a y . O n e x i t w i l l c o r r e s p o n d t o t h e

    k

    o f

    t h e [ i = j ] P a d e a p p r o x i m a n t | s e e L o n g m a n [ 7 ]

    T h e p r o g r a m b e l o w c o m p u t e s t h e d i a g o n a l t e r m s i n t h e P a d e t a b l e

    f o r t h e f u n c t i o n s

    f ( s ) o f C h a p t e r 6 , x

    3 .

    c R e q u i r e s t h e c o e c i e n t s a

    i

    i n t h e T a y l o r s e r i e s e x p a n s i o n

    p a r a m e t e r ( n = 1 1 )

    r e a l a ( 0 : n ) , g ( 0 : n , 0 : n , 0 : n ) , b ( 0 : n , 0 : n , 0 : n ) , s i g

    r e a d ( 5 , * ) s i g

    a ( 0 ) = 1 . 0

    a ( 1 ) = - 1 . 0

    a ( 2 ) = ( 1 + s i g ) / 2

    s i g = s i g / 2

    d o i = 3 , n - 1

    c a l l c o e ( i , s i g , a )

    w r i t e ( 6 , * ) i , a ( i )

    e n d d o

    c a l l l o n g p a d ( n , a , b , g )

    m = ( n - 1 ) / 2

    5

  • 7/27/2019 Prog Numerically

    6/57

    d o k = 0 , m

    w r i t e ( 6 , * ) g ( m , m , k ) , b ( m , m , k )

    e n d d o

    s t o p

    e n d

    s u b r o u t i n e l o n g p a d ( n , a , b , g )

    r e a l a ( 0 : n ) , g ( 0 : n , 0 : n , 0 : n ) , b ( 0 : n , 0 : n , 0 : n ) , x , c ( 0 : n )

    i f ( n . l e . 2 5 ) g o t o 1 0 0

    w r i t e ( 6 , * ) ` n t o o l a r g e ( > 2 5 ) '

    s t o p

    1 0 0 c ( 0 ) = 1 . 0

    c ( 1 ) = - a ( 1 ) / a ( 0 )

    d o i = 2 , n - 1

    x = a ( i )

    d o j = 1 , i - 1

    x = x + c ( j ) * a ( i - j )

    e n d d o

    c ( i ) = - x / a ( 0 )

    w r i t e ( 6 , * ) i , c ( i )

    e n d d o

    d o j = 0 , n - 1

    d o k = 0 , j

    g ( j , 0 , k ) = c ( k )

    b ( 0 , j , k ) = a ( k )

    e n d d o

    e n d d o

    d o i = 1 , n - 1

    m = n - i

    d o j = 0 , m

    b ( i , j , 0 ) = a ( 0 )

    e n d d o

    e n d d o

    d o j = 1 , n - 1

    m = n - j

    d o i = 0 , m

    6

  • 7/27/2019 Prog Numerically

    7/57

    g ( i , j , 0 ) = 1 . 0

    e n d d o

    e n d d o

    d o i = 1 , n - 2

    m = n - i

    d o j = 1 , m

    d o k = 1 , j

    x = b ( i - 1 , j , k - 1 ) * b ( i - 1 , j + 1 , j + 1 ) / b ( i - 1 , j , j )

    b ( i , j , k ) = b ( i - 1 , j + 1 , k ) - x

    e n d d o

    e n d d o

    e n d d o

    d o j = 1 , n - 2

    m = n - j

    d o i = 1 , m

    d o k = 1 , i

    x = g ( i , j - 1 , k - 1 ) * g ( i + 1 , j - 1 , i + 1 ) / g ( i , j - 1 , i )

    g ( i , j , k ) = g ( i + 1 , j - 1 , k ) - x

    e n d d o

    e n d d o

    e n d d o

    r e t u r n

    e n d

    s u b r o u t i n e f a c t ( k , f a c )

    r e a l f a c

    f a c = 1 . 0

    i f ( k . e q . 0 ) g o t o 1 0 0

    d o j = 1 , k

    f a c = j * f a c

    e n d d o

    1 0 0 r e t u r n

    e n d

    s u b r o u t i n e c o e ( k , s i g , a )

    r e a l c ( k ) , a ( k ) , y , s i g

    y = 1 . 0

    7

  • 7/27/2019 Prog Numerically

    8/57

    c a l l f a c t ( k , f a c )

    c ( 0 ) = y / f a c

    c a l l f a c t ( k - 2 , f a c )

    c ( 1 ) = y / f a c

    i f ( k . g t . 3 ) g o t o 1 0 0

    c ( 2 ) = ( 3 * y ) / 2

    g o t o 2 0 0

    1 0 0 d o i = 2 , k - 1

    c ( i ) = y

    d o j = k - i + 2 , k + i - 2 , 2

    c ( i ) = j * c ( i )

    e n d d o

    c a l l f a c t ( k - i - 1 , f a c )

    c ( i ) = c ( i ) / f a c

    c a l l f a c t ( i , f a c )

    c ( i ) = c ( i ) / f a c

    e n d d o

    2 0 0 a ( k ) = c ( k - 1 )

    d o i = k - 2 , 0 , - 1

    a ( k ) = a ( k ) * s i g + c ( i )

    e n d d o

    d o i = 1 , k

    a ( k ) = - 1 . 0 * a ( k )

    e n d d o

    r e t u r n

    e n d

    8

  • 7/27/2019 Prog Numerically

    9/57

    P r o g r a m f o r S i d i ' s m e t h o d o f L a p l a c e I n v e r s i o n

    T h i s p r o g r a m i s b a s e d o n t h e v a r i a t i o n o f S i d i ' s m e t h o d g i v e n i n

    x5 . 3 . T h e u s e r h a s t o s u p p l y t w o f u n c t i o n s u b r o u t i n e s f u n 1 ( c , x , t , f )

    a n d f u n 2 ( c , x , t , f ) . T h e f o r m e r w i l l w o r k o u t

    f ( s ) f o r g i v e n t a n d

    p l a c e i t i n l o c a t i o n f , w h e r e s = c + i t . T h e l a t t e r l i k e w i s e w o r k s o u t

    a

    f ( s ) . N u m e r i c a l i n t e g r a t i o n i s p e r f o r m e d b y m e a n s o f a G a u s s 6 4 -

    p o i n t q u a d r a t u r e f o r m u l a f o r

    1

    0

    g ( x ) d x =

    6 4

    1

    w

    i

    g ( x

    i

    ) . F o r s m a l l e r

    t i t m i g h t b e p r e f e r a b l e t o u s e a h i g h e r o r d e r G a u s s i a n q u a d r a t u r e

    f o r m u l a o r a n a d a p t i v e a p p r o a c h b a s e d o n t h e 6 4 - p o i n t f o r m u l a .

    E n t r y / E x i t P a r a m e t e r s .

    1 . t | a r e a l n u m b e r c o r r e s p o n d i n g t o t h e v a l u e a t w h i c h t h e i n -

    v e r s e t r a n s f o r m i s r e q u i r e d .

    2 . c | a r e a l p a r a m e t e r w h i c h h a s b e e n s e t a t 0 . 2 b u t m u s t b e

    i n c r e a s e d t o e n s u r e t h a t c i s g r e a t e r t h a n t h e r e a l p a r t o f a n y s i n -

    g u l a r i t y o f

    f ( s ) .

    3 . x | a r e a l v a r i a b l e w h i c h e q u a l s a

    s . T h i s i s r e q u i r e d f o r t h e

    f u n c t i o n s u b r o u t i n e s f u n 1 a n d f u n 2 .

    4 . n | i n t e g e r , t h e n u m b e r o f p o i n t s u s e d b y t h e G a u s s q u a d r a t u r e

    r u l e . T h e d e f a u l t v a l u e i s 6 4 . A c h a n g e i n n w o u l d r e q u i r e a n u p d a t e

    o f t h e s u b r o u t i n e g a u s s ( n , x , w ) .

    5 . m | i n t e g e r , t h e n u m b e r o f t e r m s u s e d i n t h e m W - e x t r a p o l a -

    t i o n . T h e d e f a u l t v a l u e i s 4 0 b u t t h i s c a n b e a l t e r e d a s l o n g a s i t i s

    n o t t o o d r a s t i c a l l y d i e r e n t .

    6 . a | r e a l , o n e x i t s h o u l d b e a g o o d a p p r o x i m a t i o n t o t h e i n v e r s e

    t r a n s f o r m i f i t a g r e e s w i t h b .

    7 . b | r e a l , o n e x i t s h o u l d b e a g o o d a p p r o x i m a t i o n t o t h e i n v e r s e

    t r a n s f o r m i f i t a g r e e s w i t h a .

    I f a a n d b a r e n o t e q u a l t h e n t h e c a l c u l a t i o n s h o u l d b e r e p e a t e d w i t h

    t h e \ c " q u a l i f y i n g t h e p r i n t i n s t r u c t i o n s u p p r e s s e d i n t h e s u b r o u t i n e

    e x t r a p . I f t h e s u c c e s s i v e i t e r a t i o n s s h o w s o m e c o n s i s t e n c y f o r a , s a y ,

    t h e n a c a n b e a c c e p t e d a s a n a p p r o x i m a t i o n t o t h e t r a n s f o r m . ( S e e

    C h a p t e r 1 0 ) .

    p a r a m e t e r ( n = 6 4 , m = 4 0 )

    r e a l x ( n ) , w ( n ) , a , b , t , c , p i , x a , x b , g a , g b

    r e a l p s i a ( 0 : m ) , f a ( 0 : m ) , z a ( 0 : m + 1 )

    r e a l p s i b ( 0 : m ) , f b ( 0 : m ) , z b ( 0 : m + 1 )

    p a r a m e t e r ( c = 0 . 2 )

    9

  • 7/27/2019 Prog Numerically

    10/57

    w r i t e ( 6 , * ) ` n = ' , n , ` m = ' , m , ` c = ' , c

    p i = a c o s ( - 1 . 0 )

    r e a d ( 5 , * ) t

    d o i = 1 , m + 1

    z a ( i - 1 ) = ( i * p i ) / t

    z b ( i - 1 ) = z a ( i - 1 )

    e n d d o

    z a ( 0 ) = z a ( 0 ) / 2

    c a l l g a u s s ( n , x , w )

    f a ( 0 ) = 0

    k = 0

    p s i a ( k ) = 0

    d o i = 1 , n

    x a = k * z a ( 0 ) + z a ( 0 ) * x ( i )

    c a l l f u n 1 ( c , x a , t , g a )

    p s i a ( k ) = p s i a ( k ) + w ( i ) * g a

    e n d d o

    p s i a ( k ) = ( p i * p s i a ( k ) ) / 2

    f b ( 0 ) = 0

    p s i b ( k ) = 0

    d o i = 1 , n

    x b = k * z b ( 0 ) + z b ( 0 ) * x ( i )

    c a l l f u n 2 ( c , x b , t , g b )

    p s i b ( k ) = p s i b ( k ) + w ( i ) * g b

    e n d d o

    p s i b ( k ) = p i * p s i b ( k )

    c w r i t e ( 6 , * ) k , p s i a ( k ) , p s i b ( k )

    d o k = 1 , m

    p s i a ( k ) = 0

    p s i b ( k ) = 0

    d o i = 1 , n

    x a = ( 2 * k - 1 ) * z a ( 0 ) + 2 * z a ( 0 ) * x ( i )

    x b = k * z b ( 0 ) + z b ( 0 ) * x ( i )

    c a l l f u n 1 ( c , x a , t , g a )

    p s i a ( k ) = p s i a ( k ) + w ( i ) * g a

    c a l l f u n 2 ( c , x b , t , g b )

    1 0

  • 7/27/2019 Prog Numerically

    11/57

    p s i b ( k ) = p s i b ( k ) + w ( i ) * g b

    e n d d o

    p s i a ( k ) = p s i a ( k ) * p i

    f a ( k ) = f a ( k - 1 ) + p s i a ( k - 1 )

    p s i b ( k ) = p s i b ( k ) * p i

    f b ( k ) = f b ( k - 1 ) + p s i b ( k - 1 )

    c w r i t e ( 6 , * ) f a ( k ) , f b ( k )

    e n d d o

    c a l l e x t r a p ( m , p s i a , f a , z a , a )

    a = 2 * a / p i

    a = ( a * e x p ( c * t ) ) / t

    w r i t e ( 6 , * ) ` a = ' , a

    c a l l e x t r a p ( m , p s i b , f b , z b , b )

    b = 2 * b / p i

    b = ( b * e x p ( c * t ) ) / t

    w r i t e ( 6 , * ) ` b = ' , b

    s t o p

    e n d

    s u b r o u t i n e f u n 1 ( c , x , t , f )

    c T h i s s u b r o u t i n e e v a l u a t e s

    e

    4

    p

    s

    r e a l c , x , t , f , u , v

    c o m p l e x s , w

    s = c m p l e x ( c , x )

    w = - 4 . 0 * s q r t ( s )

    c s q r t d e n o t e s c o m p l e x s q u a r e r o o t

    w = e x p ( w )

    f = r e a l ( w )

    f = f * c o s ( t * x )

    r e t u r n

    e n d

    s u b r o u t i n e f u n 2 ( c , x , t , f )

    c T h i s s u b r o u t i n e e v a l u a t e s a

    e

    4

    p

    s

    r e a l c , x , t , f , u , v

    c o m p l e x s , w

    s = c m p l e x ( c , x )

    w = - 4 . 0 * s q r t ( s )

    1 1

  • 7/27/2019 Prog Numerically

    12/57

    c s q r t d e n o t e s c o m p l e x s q u a r e r o o t

    w = e x p ( w )

    f = i m a g ( w )

    f = - f * s i n ( t * x )

    r e t u r n

    e n d

    s u b r o u t i n e e x t r a p ( m , p s i , f , z , a )

    r e a l p s i ( 0 : m ) , f ( 0 : m ) , z ( 0 : m ) , p ( 0 : m ) , q ( 0 : m ) , a , b

    d o j = 0 , m

    p ( j ) = f ( j ) / p s i ( j )

    q ( j ) = 1 . 0 / p s i ( j )

    e n d d o

    d o k = 1 , m

    d o j = 0 , m - k

    p ( j ) = p ( j + 1 ) - p ( j )

    q ( j ) = q ( j + 1 ) - q ( j )

    b = ( 1 . 0 / z ( j + k ) ) - ( 1 . 0 / z ( j ) )

    p ( j ) = p ( j ) / b

    q ( j ) = q ( j ) / b

    e n d d o

    a = p ( 0 ) / q ( 0 )

    c w r i t e ( 6 , * ) a

    c t h e w r i t e s t a t e m e n t i n p r e v i o u s l i n e s h o u l d b e r e i n s t a t e d

    c i f t h e r e i s a s i g n i c a n t d i e r e n c e b e t w e e n t h e

    c e s t i m a t e s ` a ' a n d ` b ' f o r t h e L a p l a c e t r a n s f o r m

    e n d d o

    r e t u r n

    e n d

    s u b r o u t i n e g a u s s ( n , x , w )

    r e a l x ( n ) , w ( n )

    x ( 1 ) = 0 . 9 9 9 6 5 2 5 2 0 8 6 7 8 8 6 0 6 9 7 2 8 4 5 2 8 1 2 1 7 2 8 1 8

    w ( 1 ) = 0 . 0 0 0 8 9 1 6 4 0 3 6 0 8 4 8 2 1 6 4 7 3 6 4 8 0 3 9 5 7 2 4 8 9 8 3 4 4

    x ( 2 ) = 0 . 9 9 8 1 7 0 0 5 8 3 8 5 9 7 7 6 3 9 6 7 3 4 6 2 2 5 0 3 3 8 2 0 0

    w ( 2 ) = 0 . 0 0 2 0 7 3 5 1 6 6 3 0 2 8 1 2 3 3 8 1 7 6 4 3 7 6 7 8 6 4 2 7 6 5 3 0

    x ( 3 ) = 0 . 9 9 5 5 0 6 6 8 5 7 3 8 3 7 2 1 6 0 3 6 9 6 9 1 1 9 1 7 2 1 6 5 2

    w ( 3 ) = 0 . 0 0 3 2 5 2 2 2 8 9 8 4 4 8 9 1 8 1 4 2 8 0 5 8 6 8 0 1 9 9 9 8 9 5 3 1

    x ( 4 ) = 0 . 9 9 1 6 6 8 1 2 6 9 4 2 3 1 2 9 5 8 4 6 5 6 4 9 6 5 1 0 7 8 4 1 6

    1 2

  • 7/27/2019 Prog Numerically

    13/57

    w ( 4 ) = 0 . 0 0 4 4 2 3 3 7 9 9 1 3 1 8 1 9 7 3 8 6 1 5 1 5 4 5 7 3 2 9 8 6 4 3 1 1

    x ( 5 ) = 0 . 9 8 6 6 6 3 4 1 3 8 9 4 9 5 5 4 8 1 8 7 0 9 2 6 7 5 3 6 7 6 1 3 6

    w ( 5 ) = 0 . 0 0 5 5 8 4 0 6 9 7 3 0 0 6 5 5 6 4 4 0 9 2 9 5 2 4 6 5 0 9 6 0 4 2 8 9

    x ( 6 ) = 0 . 9 8 0 5 0 4 3 9 9 8 2 6 0 2 6 8 5 9 4 5 9 3 0 7 0 6 0 9 4 8 5 7 9

    w ( 6 ) = 0 . 0 0 6 7 3 1 5 2 3 9 4 8 3 5 9 3 2 1 2 9 9 0 3 0 3 8 3 3 4 2 9 7 8 2 1 8

    x ( 7 ) = 0 . 9 7 3 2 0 5 6 8 7 4 2 9 2 0 1 4 0 8 0 3 1 2 4 0 7 4 5 6 7 3 6 3 2

    w ( 7 ) = 0 . 0 0 7 8 6 3 0 1 5 2 3 8 0 1 2 3 5 9 6 6 0 9 8 2 9 9 7 6 4 8 7 6 9 6 7 3

    x ( 8 ) = 0 . 9 6 4 7 8 4 5 8 6 0 6 5 9 6 9 7 8 7 9 1 0 7 4 5 0 7 7 2 7 9 6 1 3

    w ( 8 ) = 0 . 0 0 8 9 7 5 8 5 7 8 8 7 8 4 8 6 7 1 5 4 2 5 2 2 6 5 1 0 0 0 5 5 9 2 2 4

    x ( 9 ) = 0 . 9 5 5 2 6 1 0 6 8 5 3 9 2 5 1 4 0 2 8 7 8 1 9 0 3 3 4 0 0 4 1 6 5

    w ( 9 ) = 0 . 0 1 0 0 6 7 4 1 1 5 7 6 7 6 5 1 0 4 6 8 6 1 7 0 1 5 8 3 6 4 2 7 1 8 0

    x ( 1 0 ) = 0 . 9 4 4 6 5 7 7 2 2 9 9 7 5 5 7 0 5 2 9 2 6 7 0 2 0 1 9 1 3 6 4 2 6

    w ( 1 0 ) = 0 . 0 1 1 1 3 5 0 8 6 9 0 4 1 9 1 6 2 7 0 7 9 6 4 9 1 6 5 1 9 2 0 7 7 2 7

    x ( 1 1 ) = 0 . 9 3 2 9 9 9 6 9 9 0 7 7 0 4 6 4 0 9 8 8 0 3 9 1 6 9 2 5 3 5 0 7 9

    w ( 1 1 ) = 0 . 0 1 2 1 7 6 3 5 1 2 8 4 3 5 5 4 3 6 6 6 9 0 8 8 7 7 5 2 0 4 5 3 4 3 0

    x ( 1 2 ) = 0 . 9 2 0 3 1 4 6 4 8 1 2 6 2 9 0 1 8 1 3 7 5 8 4 5 7 7 2 3 4 7 9 3 7

    w ( 1 2 ) = 0 . 0 1 3 1 8 8 7 3 4 8 5 7 5 2 7 3 2 9 3 3 5 8 4 5 8 9 6 3 1 2 6 1 2 8 0

    x ( 1 3 ) = 0 . 9 0 6 6 3 2 6 5 7 5 6 1 3 9 8 7 7 9 8 7 0 9 6 1 6 6 9 0 4 3 1 5 2

    w ( 1 3 ) = 0 . 0 1 4 1 6 9 8 3 6 3 0 7 1 2 9 7 4 1 6 1 3 7 5 5 6 5 2 6 0 0 1 1 8 6 6

    x ( 1 4 ) = 0 . 8 9 1 9 8 6 1 7 9 4 7 1 6 7 0 7 0 3 8 0 5 1 1 0 2 6 2 6 0 6 8 8 4

    w ( 1 4 ) = 0 . 0 1 5 1 1 7 3 2 8 5 3 6 2 0 1 2 3 9 4 3 3 9 8 7 0 2 9 9 0 9 7 7 4 2 1

    x ( 1 5 ) = 0 . 8 7 6 4 0 9 9 5 3 6 3 0 2 6 5 9 4 8 3 0 5 9 3 1 8 8 7 4 4 2 8 4 7

    w ( 1 5 ) = 0 . 0 1 6 0 2 8 9 6 4 1 7 7 4 2 5 7 7 6 7 9 2 7 3 3 7 5 2 1 7 3 9 4 9 2 2

    x ( 1 6 ) = 0 . 8 5 9 9 4 0 9 2 5 0 8 5 8 0 5 4 1 3 4 2 4 4 7 0 1 0 8 9 1 5 9 7 4

    w ( 1 6 ) = 0 . 0 1 6 9 0 2 5 8 0 9 1 8 5 7 0 8 0 4 6 9 5 7 8 2 7 4 1 0 5 5 3 6 2 6 3

    x ( 1 7 ) = 0 . 8 4 2 6 1 8 1 5 6 5 2 7 1 1 6 6 2 1 2 8 1 7 7 9 1 8 5 5 1 5 6 8 8

    w ( 1 7 ) = 0 . 0 1 7 7 3 6 1 0 6 6 2 8 4 4 1 1 9 1 9 0 5 3 4 6 5 7 3 3 5 7 6 2 3 1 1

    x ( 1 8 ) = 0 . 8 2 4 4 8 2 7 3 5 6 2 7 3 2 8 6 6 9 9 2 8 8 8 0 6 1 5 9 9 6 7 0 2

    w ( 1 8 ) = 0 . 0 1 8 5 2 7 5 6 4 2 7 0 1 2 0 0 2 3 0 2 0 2 0 7 5 5 0 9 0 4 7 9 1 6 5

    x ( 1 9 ) = 0 . 8 0 5 5 7 7 6 7 7 5 8 6 1 9 6 6 2 5 1 2 4 4 2 6 4 8 5 5 0 9 2 7 4

    w ( 1 9 ) = 0 . 0 1 9 2 7 5 0 7 6 5 8 9 3 0 7 8 1 4 5 6 4 4 8 1 2 4 8 4 7 3 4 0 4 5 5

    x ( 2 0 ) = 0 . 7 8 5 9 4 7 8 2 3 1 0 1 3 1 7 0 1 7 1 4 1 9 3 9 0 5 8 3 2 9 5 9 4

    w ( 2 0 ) = 0 . 0 1 9 9 7 6 8 7 0 5 6 6 3 6 0 1 7 0 6 9 3 3 2 8 4 6 3 0 6 4 1 6 8 0 0

    x ( 2 1 ) = 0 . 7 6 5 6 3 9 7 3 2 0 0 9 9 4 7 2 7 2 8 2 9 0 0 6 9 5 1 7 7 2 2 2 8

    w ( 2 1 ) = 0 . 0 2 0 6 3 1 2 8 1 6 2 1 3 1 1 7 6 4 3 0 5 0 7 8 1 4 8 7 3 6 8 1 8 9 8

    x ( 2 2 ) = 0 . 7 4 4 7 0 1 5 7 2 8 5 3 5 2 6 4 7 8 7 3 9 2 6 3 1 5 3 5 1 0 9 6 1

    w ( 2 2 ) = 0 . 0 2 1 2 3 6 7 5 7 5 6 1 8 2 6 7 9 4 5 0 3 6 6 9 8 8 3 9 5 4 4 0 8 6 9

    x ( 2 3 ) = 0 . 7 2 3 1 8 3 0 0 8 6 2 6 7 3 2 0 4 3 9 9 2 4 7 3 8 5 7 3 7 9 4 5 8

    w ( 2 3 ) = 0 . 0 2 1 7 9 1 8 6 2 2 6 4 6 6 1 7 2 6 6 8 8 4 1 3 9 3 0 4 8 6 8 6 8 7 5

    1 3

  • 7/27/2019 Prog Numerically

    14/57

    x ( 2 4 ) = 0 . 7 0 1 1 3 5 0 7 8 9 8 1 9 9 5 8 0 1 8 4 7 8 8 3 3 8 5 6 3 0 0 7 9

    w ( 2 4 ) = 0 . 0 2 2 2 9 5 2 7 9 0 8 1 8 7 8 2 8 1 5 3 0 0 6 7 3 5 5 0 1 5 4 7 2 4 1

    x ( 2 5 ) = 0 . 6 7 8 6 1 0 0 7 9 1 6 8 8 3 4 0 5 7 9 7 5 2 2 1 3 0 7 5 2 3 1 0 1

    w ( 2 5 ) = 0 . 0 2 2 7 4 5 8 1 3 9 6 3 7 0 9 0 7 2 2 3 9 8 8 5 4 9 8 4 8 5 6 3 4 5 6

    x ( 2 6 ) = 0 . 6 5 5 6 6 1 4 3 5 9 9 5 1 0 5 4 7 8 0 7 8 7 5 6 3 4 9 2 8 0 0 7 8

    w ( 2 6 ) = 0 . 0 2 3 1 4 2 3 9 8 2 9 0 6 5 7 2 0 8 6 4 7 9 7 6 6 2 4 6 1 6 1 3 0 6 2

    x ( 2 7 ) = 0 . 6 3 2 3 4 3 5 8 1 1 0 4 3 8 3 7 0 8 1 8 6 9 8 2 0 8 6 2 5 5 0 1 0

    w ( 2 7 ) = 0 . 0 2 3 4 8 4 0 9 1 4 0 8 1 0 5 0 0 8 6 6 2 6 6 3 1 4 2 8 7 7 2 9 0 5 6

    x ( 2 8 ) = 0 . 6 0 8 7 1 1 8 2 1 8 7 0 0 0 3 5 4 2 0 7 4 8 2 4 3 7 4 4 9 4 4 1 1

    w ( 2 8 ) = 0 . 0 2 3 7 7 0 0 8 2 8 5 7 4 1 5 1 5 4 3 3 1 1 4 1 1 0 3 4 7 2 1 1 1 6 0

    x ( 2 9 ) = 0 . 5 8 4 8 2 2 2 1 0 2 1 1 9 9 6 4 0 9 0 1 8 6 5 6 8 1 4 8 7 4 1 3 5

    w ( 2 9 ) = 0 . 0 2 3 9 9 9 6 9 4 2 9 8 2 2 9 1 5 3 8 6 4 0 6 3 0 8 9 9 3 5 6 7 3 0 1

    x ( 3 0 ) = 0 . 5 6 0 7 3 1 4 0 9 6 4 8 0 6 0 2 7 7 2 3 5 1 8 8 2 3 1 7 4 6 1 2 4

    w ( 3 0 ) = 0 . 0 2 4 1 7 2 3 8 1 1 1 7 4 0 1 4 7 8 5 8 4 8 8 4 7 6 3 5 7 9 0 0 8 9 0

    x ( 3 1 ) = 0 . 5 3 6 4 9 6 5 6 0 8 9 3 8 9 9 5 1 9 7 2 4 7 7 1 4 7 0 9 7 0 1 6 9

    w ( 3 1 ) = 0 . 0 2 4 2 8 7 7 3 3 7 2 0 7 5 1 7 1 3 4 6 7 3 9 9 5 3 3 3 9 1 9 8 9 0 5

    x ( 3 2 ) = 0 . 5 1 2 1 7 5 1 4 6 3 3 1 7 1 2 2 1 6 2 5 4 4 7 7 9 2 1 4 2 6 8 5 8

    w ( 3 2 ) = 0 . 0 2 4 3 4 5 4 7 8 5 0 4 5 6 9 8 6 0 1 9 1 6 8 2 6 9 5 3 6 7 3 7 4 9 7

    j = n / 2

    d o i = 1 , j

    x ( j + i ) = 1 - x ( j - i + 1 )

    w ( j + i ) = w ( j - i + 1 )

    e n d d o

    r e t u r n

    e n d

    1 4

  • 7/27/2019 Prog Numerically

    15/57

    I m p l e m e n t a t i o n o f t h e d

    ( m )

    - t r a n s f o r m a t i o n v i a t h e W

    ( m )

    -

    A l g o r i t h m

    T h e W

    ( m )

    - A l g o r i t h m i s a w a y o f i m p l e m e n t i n g t h e d

    ( m )

    t r a n s f o r m a -

    t i o n | s e e x

    1 2 . 4 , F o r d a n d S i d i [ 3 ] a n d S i d i [ 1 0 ] .

    E n t r y / E x i t P a r a m e t e r s .

    1 . c f ( I ) | r e a l a r r a y w h i c h c o n t a i n t h e e l e m e n t s o f t h e s e r i e s t o

    b e s u m m e d . I n t h e p r o g r a m w h i c h f o l l o w s t h e p r o g r a m i s a p p l i e d

    t o t w o c a s e s o f s e r i e s s u m m a t i o n w h e r e t h e g e n e r a l t e r m s a r e r e -

    s p e c t i v e l y ( 1 = n

    3 = 2

    + 2 = n

    2

    ) a n d ( c o s n ) = n a n d a l s o t o n d i n g t h e

    l i m i t o f t h e P o s t - W i d d e r s e q u e n c e s r e l a t i n g t o

    f ( s ) = 1 = ( s + 1 ) a n d

    f ( s ) = 1 =

    p

    ( s

    2

    + 1 ) ( s e e x

    8 . 1 ) .

    2 m | i n t e g e r . m s p e c i e s t h e t r a n s f o r m a t i o n b e i n g u s e d a n d

    m u s t l i e b e t w e e n 1 a n d m d i m ( m d i m i s u s u a l l y c h o s e n t o b e 6 ) . F o r

    t h e t w o s e r i e s c o n s i d e r e d o n e s h o u l d t a k e m = 2 a n d w e c a n t a k e m = 1

    f o r t h e P o s t - W i d d e r a p p l i c a t i o n s .

    3 . l m a x | i n t e g e r w h i c h s p e c i e s t h e n u m b e r o f t e r m s o f t h e

    s e r i e s t o b e c o m p u t e d a n d w h i c h m u s t b e l e s s t h a n l d i m .

    4 . k a p p a | r e a l . T h i s m u s t b e !

    1 : 0 a n d i s r e q u i r e d f o r a r i t h -

    m e t i c p r o g r e s s i o n s a m p l i n g ( a p s ) .

    5 . s i g m a | r e a l . T h i s m u s t b e !

    1 . 0 a n d i s r e q u i r e d f o r g e o m e t r i c

    p r o g r e s s i o n s a m p l i n g . s i g m a m u s t b e 1 f o r a p s t o b e i n v o k e d

    6 . e p s d i v | r e a l . A s m a l l n u m b e r w h i c h i s u s e d i n t e s t i n g t h e

    m a g n i t u d e o f t h e a p p r o x i m a t i o n a p p r o x ( j , p ) .

    7 . a p p r o x ( j , p ) | r e a l a r r a y w i t h 0

    j

    l d i m , 0

    p

    l d i m .

    T h e s e a p p r o x i m a t i o n s a r e r e t u r n e d b y t h e d

    ( m )

    t r a n s f o r m a t i o n

    8 . c f ( I ) | a f u n c t i o n s u b p r o g r a m w h i c h h a s t o b e s u p p l i e d b y

    t h e u s e r . I n t h e c a s e o f t h e P o s t - W i d d e r a p p l i c a t i o n s t h e v a l u e o f t

    r e q u i r e d i n t h e L a p l a c e i n v e r s i o n m u s t a l s o b e s u p p l i e d .

    9 . n p | i n t e g e r g i v i n g t h e s p e c i c s e q u e n c e w h o s e l i m i t i s r e -

    q u i r e d .

    c I m p l e m e n t a t i o n o f t h e F o r d - S i d i W

    ( m )

    - A l g o r i t h m

    i m p l i c i t r e a l ( a - h , o - z )

    p a r a m e t e r ( m d i m = 6 , l d i m = 5 0 , e p s d i v = 1 0

    7 7

    )

    p a r a m e t e r ( n p = 2 , m = 2 , l m a x = 2 0 , i n c r = 1 , s i g m a = 1 . 3 )

    d i m e n s i o n g ( m d i m ) , p s i a i ( 0 : l d i m , 2 , 2 ) , b i g p s i ( 0 : l d i m , m d i m , 2 )

    d i m e n s i o n p s i g ( 0 : m d i m , 2 : m d i m + 1 , 2 ) , a p p r o x ( 0 : l d i m , 0 : l d i m )

    e x t e r n a l m l t a g

    1 5

  • 7/27/2019 Prog Numerically

    16/57

  • 7/27/2019 Prog Numerically

    17/57

  • 7/27/2019 Prog Numerically

    18/57

    6 0 c o n t i n u e

    d o 7 0 p = 1 , l

    j = l - p

    i f ( a b s ( p s i a i ( p , 2 , t e m p ) ) . g e . e p s d i v ) t h e n

    a p p r o x ( j , p ) = p s i a i ( p , 1 , t e m p ) / p s i a i ( p , 2 , t e m p )

    e l s e

    a p p r o x ( j , p ) = 1 0

    7 5

    w r i t e ( 6 , 1 0 1 ) j , p

    1 0 1 f o r m a t ( 1 x , ` a p p r o x ( ' , i 3 , ` , ' , i 3 , ` ) i s n o t d e n e d ' )

    e n d i f

    7 0 c o n t i n u e

    j j = c u r

    c u r = t e m p

    t e m p = j j

    8 0 c o n t i n u e

    r e t u r n

    e n d

    s u b r o u t i n e m l t a g ( m , l , t , a , g )

    i m p l i c i t r e a l ( a - h , o - z )

    r e a l k a p p a

    p a r a m e t e r ( l d i m = 5 0 )

    d i m e n s i o n g ( m )

    c o m m o n / s i g k a p / s i g m a , k a p p a

    c o m m o n / r l / i r l ( 0 : l d i m )

    i f ( s i g m a . e q . 1 . 0 ) t h e n

    l s u m p = k a p p a * l + 1 0

    1 0

    l s u m = k a p p a * ( l + 1 ) + 1 0

    1 0

    e n d i f

    i f ( s i g m a . g t . 1 . 0 ) t h e n

    i f ( l . e q . 0 ) t h e n

    l s u m p = 0

    l s u m = 1

    e l s e

    l s u m = 1

    l s u m p = 1

    d o i = 1 , l

    d o i = 0 , l s u m

    1 8

  • 7/27/2019 Prog Numerically

    19/57

    i r = s i g m a * l s u m + 1 0

    1 0

    i f ( i r . l e . l s u m ) t h e n

    l s u m = l s u m + 1

    e l s e

    l s u m = i r

    e n d i f

    i f ( i . e q . l - 1 ) l s u m p = l s u m

    e n d d o

    e n d i f

    e n d i f

    i r l ( l ) = l s u m

    i f ( l . e q . 0 ) a = 0

    d o i = l s u m p + 1 , l s u m

    a = a + c f ( i )

    e n d d o

    p = l s u m

    t = 1 . 0 / p

    d o k = 1 , m

    g ( k ) = c f ( l s u m + k - 1 )

    e n d d o

    d o i = 2 , m

    d o j = m , i , - 1

    g ( j ) = g ( j ) - g ( j - 1 )

    e n d d o

    e n d d o

    d o k = 1 , m

    g ( k ) = g ( k ) * p

    p = p * l s u m

    e n d d o

    d o k = 1 , m / 2

    s t = g ( k )

    g ( k ) = g ( m - k + 1 )

    g ( m - k + 1 ) = s t

    e n d d o

    r e t u r n

    e n d

    f u n c t i o n c f ( I )

    i m p l i c i t r e a l ( a - h , o - z )

    1 9

  • 7/27/2019 Prog Numerically

    20/57

    c o m m o n / n p / n p / t h e t a / t h e t a

    a = o a t ( i )

    i f ( n p . e q . 1 ) c f = 1 . 0 / a * * 1 . 5 + 2 . 0 / a * * 2

    i f ( n p . e q . 2 ) c f = c o s ( a * t h e t a ) / a

    i f ( n p . e q . 3 ) t h e n

    t = 1 0 . 0

    c v a l u e o f t f o r w h i c h i n v e r s e t r a n s f o r m i s r e q u i r e d

    b = - ( a + 1 . 0 )

    a 1 = a - 1

    b 1 = - ( a + 1 )

    i f ( i . g t . 1 ) g o t o 1 5 0

    c f = ( 1 . 0 + ( t / a ) ) * * b

    g o t o 1 0 0

    1 5 0 c f = ( 1 + ( t / a ) ) * * b - ( 1 + ( t / a 1 ) ) * * b 1

    1 0 0 e n d i f

    i f ( n p . e q . 4 ) t h e n

    t = 2 . 0

    s = a / t

    v = s * s + 1

    w = 1 . 0 / s q r t ( v )

    z = - ( s * w ) / v

    s 1 = ( a - 1 ) / t

    v 1 = s 1 * s 1 + 1

    w 1 = 1 . 0 / s q r t ( v 1 )

    z 1 = - ( s 1 * w 1 ) / v 1

    i f ( i . g t . 1 ) g o t o 2 0 0

    c f = - s * s * z

    g o t o 2 5 0

    2 0 0 b = 1 . 0

    d o j = 1 , i - 1

    b = j * b

    e n d d o

    d o j = 2 , i

    y = - ( ( 2 * j - 1 ) * s * z + ( j - 1 ) * ( j - 1 ) * w ) / v

    w = z

    z = y

    e n d d o

    i f ( i . g t . 2 ) g o t o 3 0 0

    y 1 = z 1

    2 0

  • 7/27/2019 Prog Numerically

    21/57

    g o t o 3 5 0

    3 0 0 d o j = 2 , i - 1

    y 1 = - ( ( 2 * j - 1 ) * s 1 * z 1 + ( j - 1 ) * ( j - 1 ) * w 1 ) / v 1

    w 1 = z 1

    z 1 = y 1

    e n d d o

    3 5 0 c f = ( - ( ( - s ) * * ( a + 1 ) ) / ( a * b ) ) * y + ( ( - s 1 ) * * a / b ) * y 1

    2 5 0 e n d i f

    r e t u r n

    e n d

    2 1

  • 7/27/2019 Prog Numerically

    22/57

    P r o g r a m f o r C r u m p ' s M e t h o d

    C r u m p ' s m e t h o d c o n s i s t s o f t h e a p p l i c a t i o n o f t h e e p s i l o n a l g o r i t h m

    t o t h e s u m m a t i o n i n D u r b i n ' s F o u r i e r s e r i e s a p p r o x i m a t i o n

    f ( t )%

    e

    c t

    T

    4

    1

    2

    ` f

    f ( c )g

    +

    I

    k = 1

    &

    f

    c +

    i k

    T

    '

    c o s

    k t

    T

    I

    k = 1

    a

    &

    f

    c +

    i k

    T

    '

    s i n

    k t

    T

    5

    S e e r e f e r e n c e , C r u m p [ 2 ] .

    E n t r y / E x i t p a r a m e t e r s

    1 . F U N | a s u b r o u t i n e w h i c h e v a l u a t e s t h e r e a l a n d i m a g i n a r y

    p a r t s o f

    f ( s ) ( s e e s a m p l e p r o g r a m ) . T h i s m u s t b e d e c l a r e d a s e x -

    t e r n a l i n t h e p r o g r a m w h i c h c a l l s C 0 6 L A F .

    2 . n | i n t e g e r . n s i g n i e s t h e n u m b e r o f p o i n t s a t w h i c h t h e

    i n v e r s e L a p l a c e t r a n s f o r m i s r e q u i r e d .

    3 . t ( n ) | r e a l a r r a y . O n e n t r y 0 : 0

    t ( 1 ) < t ( 2 )

  • 7/27/2019 Prog Numerically

    23/57

    a l p h a b .

    1 3 . n f e v a l | i n t e g e r . O n e x i t r e c o r d s t h e n u m b e r o f c a l l s m a d e

    t o t h e s u b r o u t i n e F U N .

    1 4 . w o r k ( 4 * m x t e r m + 2 ) | r e a l a r r a y . u s e d a s w o r k i n g s p a c e .

    1 5 . i f a i l | i n t e g e r . O n e n t r y i f a i l m u s t b e s e t t o 0 , - 1 o r 1 . O n e x i t

    i f a i l = 0 u n l e s s t h e r o u t i n e d e t e c t s a n e r r o r . S e e t h e N A G L i b r a r y

    s p e c i c a t i o n f o r m o r e d e t a i l s r e g a r d i n g e r r o r i n d i c a t i o n s .

    T h e N A G L i b r a r y s p e c i c a t i o n s h o u l d a l s o b e c o n s u l t e d f o r f u r t h e r

    d e t a i l s o n A c c u r a c y a n d t h e c h o i c e o f a l p h a b a n d o t h e r p r e c a u t i o n s

    w h i c h a r e a d v i s e d .

    c P r o g r a m f o r C r u m p ' s m e t h o d

    c U s e s N A G L i b r a r y r o u t i n e C 0 6 L A F

    i n t e g e r n m a x , m x t e r m , n o u t

    p a r a m e t e r ( n m a x = 2 0 , m x t e r m = 5 0 0 , n o u t = 6 )

    r e a l a h i g h , a l o w , a l p h a b , r e l e r r , t f a c

    i n t e g e r i , i f a i l , n , n a , n f e v a l , n t e r m s

    r e a l e r r e s t ( n m a x ) , t ( n m a x ) , v a l i n v ( n m a x ) , w o r k ( 4 * m x t e r m + 2 )

    e x t e r n a l C 0 6 L A F , F U N

    r e a d ( 5 , * ) n

    d o i = 1 , n

    r e a d ( 5 , * ) t ( i )

    e n d d o

    w r i t e ( n o u t , * ) ` a l p h a b = ? '

    r e a d ( 5 , * ) a l p h a b

    w r i t e ( n o u t , * ) ` r e l e r r = ? '

    r e a d ( 5 , * ) r e l e r r

    w r i t e ( n o u t , * ) ` t f a c = ? '

    r e a d ( 5 , * ) t f a c

    w r i t e ( n o u t , * )

    w r i t e ( n o u t , 9 9 9 ) ` m x t e r m = ' , m x t e r m , ` t f a c = ' , t f a c ,

    + ` a l p h a b = ' , a l p h a b , ` r e l e r r = ' , r e l e r r

    i f a i l = - 1

    c a l l C 0 6 L A F ( F U N , n , t , v a l i n v , e r r e s t , r e l e r r , a l p h a b , t f a c , m x t e r m ,

    + n t e r m s , n a , a l o w , a h i g h , n f e v a l , w o r k , i f a i l )

    2 3

  • 7/27/2019 Prog Numerically

    24/57

    i f ( i f a i l . g t . 0 . a n d . i f a i l . l t . 5 ) g o t o 6 0

    w r i t e ( n o u t , * )

    w r i t e ( n o u t , * ) ` t r e s u l t '

    d o i = 1 , n

    w r i t e ( n o u t , 9 9 8 ) t ( i ) , v a l i n v ( i )

    e n d d o

    w r i t e ( n o u t , 9 9 7 ) ` n t e r m s = ' , n t e r m s , ` n f e v a l = ' , n f e v a l ,

    + ` a l o w = ' , a l o w , ` a h i g h = ' , a h i g h , ` i f a i l = ' , i f a i l

    c t e s t f o r l a r g e r v a l u e s o f c

    r e l e r r = 1 : 0

    3

    t f a c = 0 . 8

    w r i t e ( n o u t , * )

    w r i t e ( n o u t , 9 9 9 ) ` m x t e r m = ' , m x t e r m , ` t f a c = ' , t f a c ,

    + ` a l p h a b = ' , a l p h a b , ` r e l e r r = ' , r e l e r r

    i f a i l = - 1

    c a l l C 0 6 L A F ( F U N , n , t , v a l i n v , e r r e s t , r e l e r r , a l p h a b , t f a c , m x t e r m ,

    + n t e r m s , n a , a l o w , a h i g h , n f e v a l , w o r k , i f a i l )

    i f ( i f a i l . g t . 0 . a n d . i f a i l . l t . 5 ) g o t o 6 0

    w r i t e ( n o u t , * )

    w r i t e ( n o u t , * ) ` t r e s u l t '

    d o i = 1 , n

    w r i t e ( n o u t , 9 9 8 ) t ( i ) , v a l i n v ( i )

    e n d d o

    6 0 w r i t e ( n o u t , * )

    w r i t e ( n o u t , 9 9 7 ) ` n t e r m s = ' , n t e r m s , ` n f e v a l = ' , n f e v a l ,

    + ` a l o w = ' , a l o w , ` a h i g h = ' , a h i g h , ` i f a i l = ' , i f a i l

    9 9 9 f o r m a t ( 1 x , a , i 4 , a , f 6 . 2 , a , f 6 . 2 , a , 1 p , d 8 . 1 )

    9 9 8 f o r m a t ( 1 x , f 4 . 1 , 7 x , f 9 . 6 )

    9 9 7 f o r m a t ( 1 x , a , i 4 , a , i 4 , a , f 7 . 2 , a , f 7 . 2 , a , i 2 )

    s t o p

    e n d

    s u b r o u t i n e F U N ( p r , p i , f r , )

    2 4

  • 7/27/2019 Prog Numerically

    25/57

    c e v a l u a t e s f ( s ) = 1 =

    p

    ( s

    2

    + 1 )

    r e a l p r , p i , f r , , z r , z i

    e x t e r n a l A 0 2 A A F

    c N A G r o u t i n e A 0 2 A A F e v a l u a t e s t h e s q u a r e r o o t o f a c o m p l e x n u m b e r

    e x t e r n a l A 0 2 A C F

    c N A G r o u t i n e A 0 2 A C F e v a l u a t e s t h e i n v e r s e o f a c o m p l e x n u m b e r

    f r = p r * p r - p i * p i + 1 . 0

    = 2 . 0 * p r * p i

    c a l l A 0 2 A A F ( f r , , z r , z i )

    c a l l A 0 2 A C F ( 1 . 0 , 0 . 0 , z r , z i , f r , )

    r e t u r n

    e n d

    2 5

  • 7/27/2019 Prog Numerically

    26/57

    P r o g r a m f o r P o s t - W i d d e r m e t h o d

    T h i s p r o g r a m a p p l i e s t h e r h o - a l g o r i t h m t o e x t r a p o l a t e t h e P o s t -

    W i d d e r s e q u e n c e . A n o d d n u m b e r o f t e r m s a r e r e q u i r e d t o b e c a l -

    c u l a t e d .

    E n t r y / E x i t P a r a m e t e r s .

    1 . m | i n t e g e r v a r i a b l e . I n t h e e x a m p l e p r o v i d e d b e l o w i f m = 1

    t h e n t h e i n v e r s e t r a n s f o r m o f

    f ( s ) = 1 = ( s + 1 ) i s f o u n d w h i l e m = 2

    w i l l g i v e t h e i n v e r s e t r a n s f o r m f o r

    f ( s ) = 1 =

    p

    ( s

    2

    + 1 ) :

    2 . n | i n t e g e r v a r i a b l e . T h e n u m b e r o f t e r m s t o b e u s e d i n t h e

    r h o a l g o r i t h m . n m u s t b e o d d a n d a m a x i m u m o f 4 5 .

    3 . t | r e a l v a r i a b l e . T h e v a l u e o f t a t w h i c h t h e i n v e r s e t r a n s f o r m

    i s r e q u i r e d .

    4 . r h o 2 | a r e a l a r r a y . T h e c o n t e n t s o f t h e a r r a y a r e t h e n t e r m s

    o f t h e P o s t - W i d d e r s e q u e n c e . T h e r o u t i n e w h i c h c a l c u l a t e s t h e s e -

    q u e n c e m u s t b e p r o v i d e d b y t h e u s e r .

    E a c h c y c l e o f t h e r h o - a l g o r i t h m w i l l b e p r i n t e d o u t a n d t h e n a l

    r e s u l t p r i n t e d w i l l g i v e t h e e s t i m a t e f o r f ( t ) . T h e a c c u r a c y o f t h e

    e s t i m a t e c a n b e g a u g e d b y c o m p a r i n g w i t h t h e a l t e r n a t e c y c l e w h i c h

    p r e c e d e s i t .

    r e a l r h o 1 ( 4 5 ) , r h o 2 ( 4 5 ) , a , b , c , d

    r e a d ( 5 , * ) m

    c m i n d i c a t e s t h e s e q u e n c e t o b e c o m p u t e d

    c m = 1 ,

    f ( s ) = 1 = ( s + 1 ) ; m = 2 ,

    f ( s ) = 1 = ( s

    2

    + 1 )

    1 = 2

    r e a d ( 5 , * ) n

    c n m u s t b e o d d , n

    4 5

    c a l l r h o a l g ( m , n )

    s t o p

    e n d

    s u b r o u t i n e r h o a l g ( m , n )

    r e a l r h o 1 ( 4 5 ) , r h o 2 ( 4 5 ) , a

    d o i = 1 , n

    r h o 1 ( i ) = 0

    e n d d o

    i f ( m . e q . 1 ) g o t o 5 0

    c a l l s e q u e n c e 2 ( n , r h o 2 )

    2 6

  • 7/27/2019 Prog Numerically

    27/57

    g o t o 1 0 0

    5 0 c a l l s e q u e n c e 1 ( n , r h o 2 )

    1 0 0 d o k = 1 , n - 1

    d o i = 1 , n - k

    r h o 1 ( i ) = r h o 1 ( i + 1 ) + o a t ( k ) / ( r h o 2 ( i + 1 ) - r h o 2 ( i ) )

    w r i t e ( 6 , * ) r h o 1 ( i )

    e n d d o

    w r i t e ( 6 , * ) ` n e w c y c l e '

    d o i = 1 , n - k

    a = r h o 1 ( i )

    r h o 1 ( i ) = r h o 2 ( i )

    r h o 2 ( i ) = a

    e n d d o

    e n d d o

    r e t u r n

    e n d

    s u b r o u t i n e s e q u e n c e 1 ( n , x )

    r e a l x ( 4 5 ) , t , a , b

    r e a d ( 5 , * ) t

    d o i = 1 , n

    a = o a t ( i )

    b = - ( a + 1 )

    x ( i ) = ( 1 + ( t / a ) ) * * b

    w r i t e ( 6 , * ) x ( i )

    e n d d o

    r e t u r n

    e n d

    s u b r o u t i n e s e q u e n c e 2 ( n , x )

    r e a l x ( 4 5 ) , u ( 0 : 4 5 ) , t , a , b , f , s , v , w

    v = - 1 . 0

    w = 1 . 0

    r e a d ( 5 , * ) t

    d o i = 1 , n

    a = o a t ( i )

    b = a + 1

    s = a / t

    w = w * v

    2 7

  • 7/27/2019 Prog Numerically

    28/57

    x ( i ) = w * ( s ) * * b

    c a l l f a c ( i , f )

    x ( i ) = x ( i ) / f

    c a l l d e r i v ( i , s , u )

    x ( i ) = x ( i ) * u ( i )

    w r i t e ( 6 , * ) x ( i )

    e n d d o

    r e t u r n

    e n d

    s u b r o u t i n e f a c ( i , f )

    r e a l f

    f = 1 . 0

    d o j = 1 , i

    f = j * f

    e n d d o

    r e t u r n

    e n d

    s u b r o u t i n e d e r i v ( i , s , u )

    r e a l r , s , t , u ( 0 : 4 5 )

    t = s * s + 1

    u ( 0 ) = 1 . 0 / s q r t ( t )

    u ( 1 ) = - ( s / t ) * u ( 0 )

    i f ( i . e q . 1 ) g o t o 1 0 0

    d o j = 2 , i

    r = o a t ( j )

    u ( j ) = ( 2 * r - 1 ) * s * u ( j - 1 ) + ( r - 1 ) * ( r - 1 ) * u ( j - 2 )

    u ( j ) = - u ( j ) / t

    e n d d o

    1 0 0 r e t u r n

    e n d

    2 8

  • 7/27/2019 Prog Numerically

    29/57

    P r o g r a m f o r t h e H o n i g - H i r d e s m e t h o d f o r L a p l a c e I n v e r -

    s i o n

    T h i s p r o g r a m i s b a s e d o n t h e D u r b i n a p p r o a c h t o e v a l u a t i n g t h e

    i n v e r s e L a p l a c e t r a n s f o r m b u t d i e r s f r o m t h e C r u m p m e t h o d b y

    a p p l y i n g t h e K o r r e k t u r t e c h n i q u e o f A l b r e c h t a n d H o n i g t o r e d u c e

    t h e d i s c r e t i z a t i o n e r r o r .

    E n t r y / E x i t P a r a m e t e r s .

    1 . f | a r e a l s u b r o u t i n e w h i c h e v a l u a t e s

    f ( s ) g i v e n r e a l p a r a m e -

    t e r s s r ( =

    s ) a n d s i ( = a

    s ) t h e r e s u l t s b e i n g i n d i c a t e d b y t h e r e a l

    p a r a m e t e r s f r ( =

    f ( s ) ) a n d ( = a

    f ( s ) ) . T h i s s u b r o u t i n e m u s t b e

    d e c l a r e d a s e x t e r n a l a n d s u p p l i e d b y t h e u s e r .

    2 . t 1 , t n | r e a l p a r a m e t e r s w h i c h a r e r e s p e c t i v e l y l o w e r a n d

    u p p e r b o u n d s o f t h e i n t e r v a l i n w h i c h f ( t ) i s t o b e a p p r o x i m a t e d .

    3 . n | i n t e g e r v a r i a b l e , t h e n u m b e r o f v a l u e s t

    k

    ; k = 1 ;

    ; n a t

    w h i c h f ( t ) i s t o b e c o m p u t e d . N o t e t h a t

    t

    k

    = t 1 + ( t n

    t 1 ) k = ( n + 1 ) ;

    s o t h a t i f w e r e q u i r e t

    k

    = 1 0 + k ; k = 1 ;

    ; 1 0 w e h a v e t o s e t

    t 1 = 1 0 a n d t n = 2 1 .

    4 . i m a n | i n t e g e r v a r i a b l e . I f i t i s s e t t o 0 a l l f u r t h e r p a r a m e t e r s

    a r e s e t a u t o m a t i c a l l y ( e x c e p t n s 1 w h i c h h a s t o b e 6 0 ) . I f i t i s 1 a

    m a n u a l c h o i c e o f t h e p a r a m e t e r s i l a p i n , i k o n v , n s 1 , n s 2 , i c o n , i k o r ,

    c o n i s p o s s i b l e . I n t h e e x a m p l e b e l o w i m a n = 0 .

    5 . i l a p i n | i n t e g e r v a r i a b l e . I f i l a p i n = 1 t h e a p p r o x i m a t i o n f o r -

    m u l a i s a p p l i e d a t T = t w h i l e i f i l a p i n = 2 i t i s a p p l i e d a t T = t n ( o r

    2 t n f o r t h e K o r r e k t u r t e r m s ) .

    6 . i k o n v | i n t e g e r . I f i k o n v = 1 t h e m i n i m u m - m a x i m u m m e t h o d

    i s i n v o k e d w h i l e i k o n v = 2 i n v o k e s t h e - a l g o r i t h m .

    7 . n s 1 | i n t e g e r . T h e n u m b e r o f f u n c t i o n e v a l u a t i o n s o f

    f ( s )

    w h i c h a r e u s e d i n o r d e r t o e s t i m a t e f ( t ) . n s 1 = 6 0 i f i m a n = 0 .

    8 . n s 2 | i n t e g e r . T h e n u m b e r o f f u n c t i o n e v a l u a t i o n s o f

    f ( s ) u s e d

    t o a p p r o x i m a t e t h e K o r r e k t u r t e r m .

    9 . i c o n | i n t e g e r . I f i c o n = 0 t h e n t h e r e i s n o o p t i m a l c h o i c e o f

    f r e e p a r a m e t e r s . I f i c o n = 1 t h e n t h e r e i s o p t i m a l c h o i c e o f f r e e p a -

    r a m e t e r s f o r t = t

    [ n = 2 ]

    w h i l e i f i c o n = 2 t h e r e i s o p t i m a l c h o i c e o f f r e e

    p a r a m e t e r s f o r t = t

    k

    .

    1 0 . i k o r | i n t e g e r . I f i k o r = 0 t h e r e i s n o a p p l i c a t i o n o f t h e K o r -

    r e k t u r m e t h o d o t h e r w i s e i t i s 1 .

    2 9

  • 7/27/2019 Prog Numerically

    30/57

    1 1 . c o n | r e a l . I f i c o n = 0 t h e n t h e f r e e p a r a m e t e r c i s d e t e r -

    m i n e d f r o m c o n = c T .

    1 2 . h ( 6 , n ) | a r e a l a r r a y w h i c h o n e x i t c o n t a i n s f ( t

    k

    ) i n r o w 1 .

    T h e s e c o n d r o w i s a w o r k a r e a . T h e t h i r d r o w c o n t a i n s t h e c o m p u t e d

    o p t i m a l p a r a m e t e r c o n

    o p t

    = c

    o p t

    T f o r t = t

    k

    . T h e f o u r t h r o w g i v e s

    t h e c o d e f o r t h e a c c e l e r a t i o n m e t h o d a d o p t e d ( 0 | n o a c c e l e r a t i o n

    o f c o n v e r g e n c e , 1 | m i n i m a x , 2 | e p s i l o n a l g o r i t h m ( e p a l ) , 4 |

    c u r v e t t i n g m e t h o d ( c f m ) , P = n s 1 + 2 | i n d i c a t e s o v e r o w i n e p a l

    i f P!

    4 . T h e f t h r o w c o n t a i n s t h e a b s o l u t e e r r o r c a l c u l a t e d b y f o r -

    m u l a ( 3 3 ) i n t h e H o n i g - H i r d e s p a p e r a n d t h e s i x t h r o w c o n t a i n s

    a c o n t r o l n u m b e r o f u p t o 6 d i g i t s w h i c h i s e x p l a i n e d i n H o n i g a n d

    H i r d e s [ 6 ] .

    1 3 . E ( 3 , n s 1 ) | a r e a l a r r a y u s e d a s w o r k i n g s p a c e .

    1 4 . i o u t | i n t e g e r . R e f e r s t o t h e o u t p u t d e v i c e u s e d .

    1 5 . i e r | i n t e g e r . P a r a m e t e r w h i c h i n d i c a t e s e r r o r i n t h e i n p u t

    d a t a . I f i e r = 0 t h e r e i s n o e r r o r . O t h e r w i s e t h e e r r o r i s i n d i c a t e d

    b y t h e p r i n t - o u t .

    i n t e g e r n , i m a n , i l a p i n , i k o n v , n s 1 , n s 2 , i c o n , i e r , i o u t

    p a r a m e t e r ( n = 1 0 , n s 1 = 6 0 , i m a n = 0 )

    r e a l t 1 , t n , c o n , h ( 6 , n ) , e ( 3 , n s 1 )

    e x t e r n a l f

    r e a d ( 5 , * ) t 1 , t n

    i o u t = 6

    c a l l l a p i n ( f , t 1 , t n , n , i m a n , i l a p i n , i k o n v , n s 1 , n s 2 , i c o n , i k o r ,

    + c o n , h , e , i e r , i o u t )

    d o i = 1 , n

    t = t 1 + ( t n - t 1 ) * i / ( n + 1 )

    w r i t e ( i o u t , * ) t , h ( 1 , n )

    e n d d o

    s t o p

    e n d

    s u b r o u t i n e l a p i n ( f , t 1 , t n , n , i m a n , i l a p i n , i k o n v , n s 1 , n s 2 , i c o n ,

    + i k o r , c o n , h , e , i e r , i o u t )

    r e a l a b r n , a b s f , c o n , c o n o p t , c o n 1 , c o n 2 , d e l , e , f n , f n s 1

    r e a l f r e a l , m a g , h , p i , r a c c , r n s u m , r n s u m k , t , t a , t b

    r e a l t k , t n , t 0 , t 1 , v 1 , v 2 , w

    3 0

  • 7/27/2019 Prog Numerically

    31/57

    i n t e g e r h m o n o

    e x t e r n a l f

    d i m e n s i o n h ( 6 , n ) , e ( 3 , n s 1 )

    c o m m o n / c l a p i n / t a , t b , t 0 , c o n o p t , a b s f , l v a l , h m o n o

    c i n i t i a l i s e a r r a y h

    d o i = 1 , n

    d o j = 1 , 6

    h ( j , i ) = 0 . 0

    e n d d o

    e n d d o

    i e r = 0

    i f ( t n . l t . t 1 ) i e r = 1

    i f ( n . l t . 1 ) i e r = i e r + 1 0

    i f ( i m a n . e q . 0 ) g o t o 1 0 0

    i f ( i m a n . e q . 1 ) g o t o 1 1 0

    i e r = i e r + 1 0 0

    g o t o 1 2 0

    c p a r a m e t e r s f o r i m a n = 0

    1 0 0 i f ( n s 1 . n e . 6 0 ) i e r = i e r + 1 0 0 0 0 0

    i f ( i e r . n e . 0 ) g o t o 1 2 0

    i l a p i n = 1

    i k o n v = 2

    i c o n = 1

    i k o r = 0

    n s 2 = 0

    g o t o 2 0 0

    c i m a n = 1

    1 1 0 i f ( i l a p i n . l t . 1 . o r . i l a p i n . g t . 2 ) i e r = i e r + 1 0 0 0

    i f ( i k o n v . l t . 1 . o r . i k o n v . g t . 2 ) i e r = i e r + 1 0 0 0 0

    i f ( n s 1 . l t . 1 . o r . ( n s 2 . l t . 1 . a n d . i k o r . e q . 1 ) ) i e r = i e r + 1 0 0 0 0 0

    i f ( i c o n . l t . 0 . o r . i c o n . g t . 2 . o r . ( i c o n . e q . 2 . a n d . i l a p i n . e q . 2 ) )

    + i e r = i e r + 1 0 0 0 0 0 0

    i f ( i k o r . l t . 0 . o r . i k o r . g t . 1 ) i e r = i e r + 1 0 0 0 0 0 0 0

    i f ( i c o n . e q . 0 . a n d . c o n . l e . 0 . 0 ) i e r = i e r + 1 0 0 0 0 0 0 0 0

    i f ( i e r . e q . 0 ) g o t o 2 0 0

    3 1

  • 7/27/2019 Prog Numerically

    32/57

    1 2 0 c a l l e r r o r ( i e r , t 1 , t n , n , i m a n , i l a p i n , i k o n v , n s 1 , n s 2 , i c o n ,

    + i k o r , c o n , i o u t )

    r e t u r n

    2 0 0 p i = 4 . 0 * a t a n ( 1 . 0 )

    c o n 1 = 2 0 . 0

    c o n 2 = c o n 1 - 2 . 0

    a b s f = 0 . 0

    j 3 = ( 3 - i c o n ) / 2 + n * ( i c o n / 2 )

    t a = t 1

    t b = t n

    d o 8 3 0 l 3 = 1 , j 3

    l v a l = l 3

    h m o n o = 0

    k o r 1 = i k o r

    c c o m p u t a t i o n o f t h e o p t i m a l p a r a m e t e r s

    2 1 0 i f ( i c o n - 1 ) 2 1 5 , 2 3 0 , 2 2 0

    2 1 5 j u m p = 0

    c a l l l a p i n 2 ( f , t 1 , t n , n , i l a p i n , i k o n v , n s 1 , n s 2 , i c o n , i k o r , c o n , h , e , j u m p )

    g o t o 8 3 0

    2 2 0 t a = t 1 + o a t ( l 3 ) * ( t n - t 1 ) / o a t ( n + 1 )

    t b = t a

    2 3 0 n h = n / 2

    t = t a + ( t b - t a ) * o a t ( n h ) / o a t ( n + 1 )

    t k = o a t ( 2 - i l a p i n ) * t + o a t ( i l a p i n - 1 ) * t b

    c c o m p u t a t i o n o f t h e t r u n c a t i o n e r r o r ( r n s u m )

    t 0 = t

    c o n = c o n 1

    j u m p = 1

    c a l l l a p i n 2 ( f , t 1 , t n , n , i l a p i n , i k o n v , n s 1 , n s 2 , i c o n , i k o r , c o n , h , e , j u m p )

    2 4 0 f n = h ( 1 , 1 3 )

    f n s 1 = e ( 1 , n s 1 )

    c o n = c o n 2

    j u m p = 2

    c a l l l a p i n 2 ( f , t 1 , t n , n , i l a p i n , i k o n v , n s 1 , n s 2 , i c o n , i k o r , c o n , h , e , j u m p )

    2 5 0 i f ( f n . n e . h ( 1 , l 3 ) . a n d . f n s 1 . n e . e ( 1 , n s 1 ) ) g o t o 2 5 5

    3 2

  • 7/27/2019 Prog Numerically

    33/57

    c o n o p t = c o n

    a b s f = 0 . 0

    g o t o 3 2 0

    2 5 5 r n s u m = t k * ( f n - h ( 1 , l 3 ) ) / e x p ( c o n 1 ) - e x p ( c o n 2 )

    i f ( i l a p i n . e q . 2 ) g o t o 2 6 0

    c c o m p u t a t i o n o f t h e a c c e l e r a t i o n f a c t o r ( d e l )

    r a c c = t * ( f n s 1 - e ( 1 , n s 1 ) ) / ( e x p ( c o n 1 ) - e x p ( c o n 2 ) )

    d e l = r n s u m / r a c c

    2 6 0 i f ( i k o r . e q . 1 ) g o t o 2 8 0

    c o p t i m a l p a r a m e t e r s ( M e t h o d A )

    t 0 = 2 . 0 * t k + t

    c o n = c o n 1 / 4 . 0

    j u m p = 3

    c a l l l a p i n 2 ( f , t 1 , t n , n , i l a p i n , i k o n v , n s 1 , n s 2 , i c o n , i k o r , c o n , h , e , j u m p )

    2 7 0 f n = h ( 1 , l 3 )

    c o n o p t = - t k / ( 2 . 0 * t k + t ) * l o g ( a b s ( r n s u m / ( t k * f n ) ) )

    g o t o 3 1 0

    c o p t i m a l p a r a m e t e r s f o r t h e K o r r e k t u r m e t h o d ( M e t h o d A )

    2 8 0 t = 4 . 0 * t k + t

    c o n = c o n 1 / 4 . 0

    j u m p = 4

    c a l l l a p i n 2 ( f , t 1 , t n , n , i l a p i n , i k o n v , n s 1 , n s 2 , i c o n , i k o r , c o n , h , e , j u m p )

    2 9 0 f n = h ( 1 , l 3 )

    t 0 = 8 . 0 * t k + t

    j u m p = 5

    c a l l l a p i n 2 ( f , t 1 , t n , n , i l a p i n , i k o n v , n s 1 , n s 2 , i c o n , i k o r , c o n , h , e , j u m p )

    3 0 0 f n = f n - h ( 1 , l 3 )

    c o n o p t = - t k / ( 4 . 0 * t k + t ) * l o g ( a b s ( r n s u m / ( t k * f n ) ) )

    c o p t i m a l p a r a m e t e r s ( M e t h o d B )

    3 1 0 i f ( i l a p i n . e q . 1 ) g o t o 3 1 5

    a b s f = a b s ( e x p ( c o n o p t ) * r n s u m * 2 . 0 / t k )

    g o t o 3 2 0

    3 1 5 v 1 = c o n 1 / t

    v 2 = c o n o p t / t

    3 3

  • 7/27/2019 Prog Numerically

    34/57

    w = p i * o a t ( n s 1 ) / t

    c a l l f ( v 2 , w , f r e a l , m a g )

    r n s u m k = r n s u m k * f r e a l

    c a l l f ( v 1 , w , f r e a l , m a g )

    r n s u m k = r n s u m k / f r e a l

    a b r n = ( r n s u m k - r n s u m ) / ( v 2 - v 1 )

    c o n o p t = - l o g ( a b s ( a b r n / t + r n s u m k ) / ( t * o a t ( i k o r * 2 + 2 ) * f n ) ) ) /

    + o a t ( 3 + 2 * i k o r )

    v 1 = v 2

    v 2 = c o n o p t / t

    c a l l f ( v 2 , w , f r e a l , m a g )

    r n s u m k = r n s u m k / f r e a l

    a b s f = e x p ( c o n o p t ) / t * a b s ( r n s u m k ) +

    + a b s ( e x p ( - 2 . 0 * c o n o p t ) * f n * o a t ( i k o r - 1 )

    + e x p ( - 4 . 0 * c o n o p t ) * f n * o a t ( i k o r ) )

    3 2 0 i f ( c o n o p t . l e . 0 . 0 ) c o n o p t = 1 . 0

    j u m p = 6

    c a l l l a p i n 2 ( f , t 1 , t n , n , i l a p i n , i k o n v , n s 1 , n s 2 , i c o n , i k o r , c o n , h , e , j u m p )

    8 3 0 c o n t i n u e

    r e t u r n

    e n d

    s u b r o u t i n e l a p i n 2 ( f , t 1 , t n , n , i l a p i n , i k o n v , n s 1 , n s 2 , i c o n , i k o r ,

    + c o n , h , e , j u m p )

    c L a p l a c e i n v e r s i o n w i t h o p t i m a l p a r a m e t e r s

    r e a l a , a b s f , b , c o n , c o n o p t , d e l t a , d i v i , e , e 1 , e 2 , e 3 , e i n s

    r e a l f a k t o r , m a g , f r e a l , h , p i , p i t , p i t e , r a l , s u i m , s u r e

    r e a l t a , t b , t e , t l , t m , t m 1 , t n , t t , t 0 , t 1 , x 1 , x 2 , x 3 , v , w , y 1 , y 2 , y 3

    i n t e g e r r i c h t , r i c h t a , h m o n o

    e x t e r n a l f

    d i m e n s i o n h ( 6 , n ) , e ( 3 , n s 1 ) , e 3 ( 3 )

    c o m m o n / c l a p i n / t a , t b , t 0 , c o n o p t , a b s f , l 3 , h m o n o

    p i = 4 . 0 * a t a n ( 1 . 0 )

    i f ( j u m p . e q . 0 ) g o t o 3 6 0

    i f ( j u m p . l t . 6 ) g o t o 3 7 0

    3 4

  • 7/27/2019 Prog Numerically

    35/57

    t 0 = t a

    t t = t b

    i 1 = l 3

    j 1 = ( 2 - i c o n ) * n + ( i c o n - 1 ) * l 3

    c o n = c o n o p t

    k o r 1 = i k o r

    g o t o 3 8 0

    3 6 0 t 0 = t 1

    t t = t n

    i 1 = 1

    j 1 = n

    k o r 1 = i k o r

    j u m p = 6

    g o t o 3 8 0

    3 7 0 k o r 1 = 0

    t t = t 0

    i 1 = l 3

    j 1 = l 3

    3 8 0 d e l t a = ( t t - t 0 ) / o a t ( n + 1 )

    n s u m = n s 1

    c c o m p u t a t i o n o f t h e t - v a l u e s f r o m t 0 , t t

    d o 8 0 5 k 2 = 1 , 2

    i f ( i l a p i n . e q . 1 ) g o t o 4 2 0

    t e = o a t ( k 2 ) * t t

    v = c o n / t e

    c a l l f ( v , 0 . 0 , f r e a l , m a g )

    r a l = - 0 . 5 * f r e a l

    p i t e = p i / t e

    4 0 5 d o l = 1 , n s u m

    w = o a t ( l - 1 ) * p i t e

    c a l l f ( v , w , f r e a l , m a g )

    e ( 2 , l ) = f r e a l

    e ( 3 , l ) = m a g

    e n d d o

    3 5

  • 7/27/2019 Prog Numerically

    36/57

    4 2 0 d o 8 0 0 k 1 = i 1 , j 1

    t l = t 0 + o a t ( k 1 ) * d e l t a

    i f ( i l a p i n . e q . 2 ) g o t o 4 4 0

    i f ( k 2 . e q . 2 ) t l = 3 . 0 * t l

    v = c o n / t l

    f a k t o r = e x p ( v * t l ) / t l

    c a l l f ( v , 0 . 0 , f r e a l , m a g )

    r a l = - 0 . 5 * f r e a l

    p i t = p i / t l

    e i n s = 1 . 0

    s u r e = 0 . 0

    c m e t h o d o f D u r b i n

    4 2 5 d o l = 1 , n s u m

    w = o a t ( l - 1 ) * p i t

    c a l l f ( v , w , f r e a l , m a g )

    s u r e = s u r e + f r e a l * e i n s

    e i n s = - e i n s

    e ( 1 , l ) = f a k t o r * ( r a l + s u r e )

    e n d d o

    g o t o 4 6 0

    4 4 0 i f ( k 2 . e q . 2 ) t l = t l + t e

    f a k t o r = e x p ( v * t l ) / t e

    s u r e = 0 . 0

    s u i m = 0 . 0

    d o l = 1 , n s u m

    w = o a t ( l - 1 ) * p i t e

    s u r e = s u r e + e ( 2 , l ) * c o s ( w * t l )

    s u i m = s u i m + e ( 3 , l ) * s i n ( w * t l )

    e ( 1 , l ) = f a k t o r * ( r a l + s u r e - s u i m )

    e n d d o

    c s e a r c h f o r s t a t i o n a r y v a l u e s

    4 6 0 n m a x = n s u m * 2 / 3

    m o n o t o = 0

    k = 0

    3 6

  • 7/27/2019 Prog Numerically

    37/57

    r i c h t a = s i g n ( 1 . 5 , ( e ( 1 , n s u m ) - e ( 1 , n s u m - 1 ) ) )

    d o l = 1 , n m a x

    j = n s u m - 1

    r i c h t = s i g n ( 1 . 5 , e ( 1 , j ) - e ( 1 , j - 1 ) ) )

    i f ( r i c h t . e q . r i c h t a ) g o t o 5 0 0

    k = k + 1

    e 3 ( k ) = e ( 1 , j )

    r i c h t a = r i c h t

    i f ( k . e q . 3 ) g o t o 5 1 0

    5 0 0 e n d d o

    i f ( k . e q . 0 ) g o t o 7 0 0

    h ( k 2 , k 1 ) = e ( 1 , n s u m )

    i f ( k 2 . e q . 1 ) h ( 4 , k 1 ) = 0

    g o t o 7 9 0

    5 1 0 k e = 2

    i f ( ( e 3 ( k e ) - e ( 1 , j ) ) * o a t ( r i c h t a ) . g t . 0 ) g o t o 5 6 0

    j m i n = n s u m / 3

    j m a x = j - 1

    d o j j = j m i n , j m a x

    j = j - 1

    r i c h t = s i g n ( 1 . 5 , ( e ( 1 , j ) - e ( 1 , j - 1 ) ) )

    i f ( r i c h t . e q . r i c h t a ) g o t o 5 4 0

    r i c h t a = r i c h t

    k e = 3 - k e

    i f ( ( e 3 ( k e ) - e ( 1 , j ) ) * o a t ( r i c h t a ) . g t . 0 . 0 ) g o t o 5 6 0

    5 4 0 e n d d o

    5 5 0 m o n o t o = 1

    i f ( i k o n v . e q . 2 ) g o t o 6 3 0

    c m i n i m u m - m a x i m u m m e t h o d ( m i n i m a x )

    5 6 0 h ( k 2 , k 1 ) = ( e 3 ( 1 ) + e 3 ( 3 ) ) / 4 . 0 + e 3 ( 2 ) / 2 . 0

    i f ( k 2 . e q . 1 ) h ( 4 , k 1 ) = 1

    g o t o 7 9 0

    c e p s i l o n a l g o r i t h m ( e p a l )

    6 3 0 k = 0

    n s u m m 1 = n s u m - 1

    e 2 = e ( 1 , 1 )

    d o l = 1 , n s u m m 1

    3 7

  • 7/27/2019 Prog Numerically

    38/57

    e 1 = e ( 1 , 1 )

    t m = 0 . 0

    l p 1 = l + 1

    d o m = 1 , l

    m m = l p 1 - m

    t m 1 = e ( 1 , m m )

    d i v i = e ( 1 , m m + 1 ) - e ( 1 , m m )

    i f ( a b s ( d i v i ) . g t . 1 : 0

    2 0

    ) g o t o 6 4 0

    k = 1

    g o t o 6 7 0

    6 4 0 e ( 1 , m m ) = t m + 1 . 0 / d i v i

    t m = t m 1

    e n d d o

    e 2 = e 1

    e n d d o

    6 7 0 i f ( a b s ( e 1 ) . g t . a b s ( e 2 ) e 1 = e 2

    i f ( a b s ( e ( 1 , 1 ) ) . g t . a b s ( e 1 ) ) e ( 1 , 1 ) = e 1

    h ( k 2 , k 1 ) = e ( 1 , 1 )

    i f ( k 2 . e q . 1 ) h ( 4 , k 1 ) = k + 2

    g o t o 7 9 0

    c c u r v e t t i n g ( c f m )

    7 0 0 x 1 = o a t ( n s u m ) - 2 . 0

    x 2 = o a t ( n s u m ) - 1 . 0

    x 3 = o a t ( n s u m ) - 0 . 0

    y 1 = e ( 1 , n s u m - 2 )

    y 2 = e ( 1 , n s u m - 1 )

    y 3 = e ( 1 , n s u m )

    b = ( ( y 3 - y 1 ) * x 3 * x 3 * ( x 1 + x 2 ) / ( x 1 - x 3 )

    + - ( y 2 - y 1 ) * x 2 * x 2 * ( x 1 + x 3 ) / ( x 1 - x 2 ) ) / ( x 3 - x 2 )

    a = ( ( y 2 - y 1 ) - b * ( x 1 - x 2 ) / ( x 1 * x 2 ) ) * ( x 2 * x 2 * x 1 * x 1 ) / ( x 1 * x 1 - x 2 * x 2 )

    h ( k 2 , k 1 ) = y 1 - ( a / x 1 + b ) / x 1

    m o n o t o = 1

    i f ( k 2 . e q . 1 ) h ( 4 , k 1 ) = 3

    7 9 0 h ( 3 , k 1 ) = c o n

    h ( 5 , k 1 ) = a b s f

    h m o n o = h m o n o + k 2 * m o n o t o * 1 0 * * ( 6 - j u m p )

    3 8

  • 7/27/2019 Prog Numerically

    39/57

    i f ( j u m p . l t . 6 ) g o t o 8 0 0

    h ( 6 , k 1 ) = o a t ( ( 2 - k 2 ) * h m o n o +

    + o a t ( k 2 - 1 ) * ( o a t ( 2 * m o n o t o ) + h ( 6 , k 1 ) )

    h m o n o = h m o n o / 1 0 * 1 0

    8 0 0 c o n t i n u e

    i f ( k o r 1 . e q . 0 ) r e t u r n

    i f ( k 2 . e q . 2 ) g o t o 8 1 0

    n s u m = n s 2

    8 0 5 c o n t i n u e

    c K o r r e k t u r m e t h o d

    8 1 0 f a k t o r = - e x p ( - 2 . 0 * c o n )

    d o k = i 1 , j 1

    h ( 1 , k ) = h ( 1 , k ) + f a k t o r * h ( 2 , k )

    e n d d o

    r e t u r n

    e n d

    s u b r o u t i n e e r r o r ( i e r , t 1 , t n , n , i m a n , i l a p i n , i k o n v , n s 1 , n s 2 , i c o n , i k o r ,

    * c o n , i o u t )

    r e a l t 1 , t n , c o n

    w r i t e ( i o u t , 1 ) i e r , t 1 , t n , n , i m a n , i l a p i n , i k o n v , n s 1 , n s 2 , i c o n , i k o r , c o n

    1 f o r m a t ( / / / 1 4 h * * * e r r o r * * * , 8 x , 5 h i e r = , i 1 2 / /

    * 1 0 h t 1 * , d 1 0 . 3 , 1 8 x , 1 2 h 1 * t n

  • 7/27/2019 Prog Numerically

    40/57

    e n d

    s u b r o u t i n e f ( s r , s i , f r , )

    c e v a l u a t e s f u n c t i o n 1 = ( s

    2

    + 1 )

    r e a l s r , s i , f r , , a

    f r = s r * s r - s i * s i + 1 . 0

    = 2 * s r * s i

    a = f r * f r + *

    f r = f r / a

    = - / a

    r e t u r n

    e n d

    4 0

  • 7/27/2019 Prog Numerically

    41/57

    P r o g r a m f o r T a l b o t ' s m e t h o d

    T h i s i s a s u b - p r o g r a m o f A l g o r i t h m 6 8 2 b y M u r l i a n d R i z z a r d i [ 8 ] .

    I t o m i t s a s e c t i o n o f t h e M u r l i - R i z z a r d i p r o g r a m w h i c h d e a l s w i t h

    e s s e n t i a l s i n g u l a r i t i e s . R e a d e r s s h o u l d b e w a r n e d t h a t s o m e o f t h e

    v a r i a b l e n a m e s u s e d b y M u r l i a n d R i z z a r d i h a v e b e e n c h a n g e d t o b e

    m o r e c o n s i s t e n t w i t h t h e v a l u e s u s e d i n t h e t e x t a n d i n t h e o r i g i n a l

    T a l b o t p a p e r . E x a m p l e s a r e c o n l a m , c o n s i g , a n d c o n n u a n d t v a l u e

    w h i c h h a v e b e c o m e l a m , s i g , n u a n d t v a l .

    E n t r y / E x i t p a r a m e t e r s

    1 . a p | a c o m p l e x s u b r o u t i n e w h i c h e v a l u a t e s

    f ( s ) f o r c o m -

    p l e x a r g u m e n t s . T h i s s u b r o u t i n e m u s t b e s u p p l i e d b y t h e r e a d e r .

    2 . n v | a r e a l f u n c t i o n w h i c h e v a l u a t e s t h e f u n c t i o n f ( t ) a t

    t h e g i v e n d a t a p o i n t s f o r s o m e k n o w n t e s t f u n c t i o n . T h i s w i l l g i v e

    a m e a s u r e o f c o n d e n c e w h e n o p e r a t i n g t h e p r o g r a m w i t h f ( t ) u n -

    k n o w n . I n t h i s s i t u a t i o n t a k e f ( t ) e q u a l t o 1 . 0 .

    3 . s i n g s | t h i s r o u t i n e m u s t r e t u r n t h e n u m b e r o f s i n g u l a r i t i e s ,

    t h e i r l o c a t i o n a n d m u l t i p l i c i t y . T h e r e i s a r e s t r i c t i o n a s t h e n u m b e r

    o f s i n g u l a r i t i e s m a y n o t e x c e e d 2 4 .

    4 . n t | i n t e g e r . T h e n u m b e r o f d a t a p o i n t s a t w h i c h t h e L a p l a c e

    t r a n s f o r m i s r e q u i r e d .

    5 . v t | r e a l a r r a y o f d i m e n s i o n n t . D a t a t o b e s u p p l i e d b y t h e

    u s e r . I n t h e e x a m p l e b e l o w d a t a v a l u e s a r e 0 : 5 ;

    ; 6 4 : 0 .

    6 . n o s i n g | i n t e g e r . T h e n u m b e r o f s i n g u l a r i t i e s o f t h e f u n c t i o n

    f ( s ) w i t h n o n - n e g a t i v e i m a g i n a r y p a r t s .

    7 . s i n g r e | r e a l a r r a y o f d i m e n s i o n

    2 4 . T h i s a r r a y c o n t a i n s

    t h e r e a l p a r t s o f t h e s i n g u l a r i t i e s .

    8 . s i n g i m | r e a l a r r a y o f d i m e n s i o n

    2 4 . T h i s a r r a y c o n t a i n s

    t h e i m a g i n a r y p a r t s o f t h e s i n g u l a r i t i e s .

    9 . m u l t s i | i n t e g e r a r r a y . T h i s a r r a y r e c o r d s t h e m u l t i p l i c i t y o f

    e a c h s i n g u l a r i t y .

    F o r e x a m p l e , i f

    f ( s ) = 1 = ( s

    1 )

    3

    [ ( s

    0 : 5 )

    2

    + 4 ] , w e w o u l d s e t

    n o s i n g = 3 ,

    s i n g r e ( 1 ) = 1 , s i n g i m ( 1 ) = 0 , m u l t s i ( 1 ) = 2 ;

    s i n g r e ( 2 ) = 0 . 5 , s i n g i m ( 2 ) = 2 , m u l t s i ( 2 ) = 0 ;

    s i n g r e ( 3 ) = 0 . 5 , s i n g i m ( 3 ) = - 2 , m u l t s i ( 3 ) = 0 ;

    i n t h e s u b r o u t i n e s i n g s .

    1 0 . i n v f | r e a l . T h e c o m p u t e d v a l u e o f f ( t ) .

    1 1 . n o p t s | i n t e g e r . T h e n u m b e r o f p o i n t s u s e d i n t h e T a l b o t

    s u m m a t i o n a s c o m p u t e d b y t h e s u b r o u t i n e t a p a r .

    4 1

  • 7/27/2019 Prog Numerically

    42/57

    1 2 . i c | i n t e g e r . T h e m a c h i n e d e c i m a l p r e c i s i o n u s e d b y T a l b o t ' s

    m e t h o d .

    1 2 a . i d | a n i n t e g e r b e t w e e n 1 a n d i c + 2 .

    1 3 . i e r | i n t e g e r . T h i s i s a n e r r o r i n d i c a t o r . i e r = 0 i n d i c a t e s

    n o r m a l t e r m i n a t i o n . i e r = 1 i n d i c a t e s t h a t t h e o u t p u t v a l u e o f t h e

    s u b r o u t i n e n v c a u s e s o v e r o w a n d a s c a l e d v a l u e o f f ( t ) i s r e t u r n e d .

    1 4 . p s e r r | r e a l . T h i s i s t h e r a t i o o f a b s o l u t e e r r o r / ( e

    t

    ) .

    1 5 . e r r o r | r e a l . T h i s i s t h e r e l a t i v e ( R ) e r r o r w h e n t h e v a l u e

    p r o d u c e d b y n v i s g r e a t e r t h a n 1 . O t h e r w i s e i t i s t h e a b s o l u t e e r r o r

    ( A ) .

    i m p l i c i t r e a l ( a - h , o - z )

    r e a l l a m , n u , i n v f

    r e a l n v , f v , t t , e r r o r , p s e r r , d i n v f , d e m a x , d 2 m a c h

    r e a l r 1 m a c h ( 3 ) , r 1

    c t h e m a c h i n e c o n s t a n t s r 1 m a c h ( * ) a r e d e n e d b y M u r l i a n d R i z z a r d i

    c | t h i s p r o g r a m g i v e s t h e I E E E 7 5 4 s p e c i c a t i o n f o r t h e s e c o n s t a n t s

    e x t e r n a l a p

    c o m p l e x a p

    c h a r a c t e r * 1 a l f a

    d i m e n s i o n s i n g r e ( 2 4 ) , s i n g i m ( 2 4 ) , m u l t s i ( 2 4 ) , v t ( 8 )

    d a t a n d i m / 2 4 /

    d a t a v t / 0 . 5 , 1 . 0 , 2 . 0 , 4 . 0 , 8 . 0 , 1 6 . 0 , 3 2 . 0 , 6 4 . 0 /

    d a t a d 2 m a c h / Z ` 7 f e f f f f f f f f f f f f f ' /

    c d 2 m a c h i s t h e d o u b l e l e n g t h v e r s i o n o f r 1 m a c h ( 2 )

    d a t a r 1 m a c h ( 2 ) / Z ` 7 f 7 f f f f f ' /

    d a t a r 1 m a c h ( 3 ) / Z ` 3 3 8 0 0 0 0 0 ' /

    n t = 8

    i c = - i x ( l o g 1 0 ( r 1 m a c h ( 3 ) ) * 3 . / 4 . )

    d e m a x = l o g ( d 2 m a c h )

    e m a x = l o g ( r 1 m a c h ( 2 ) )

    c a l l s i n g s ( n d i m , s i n g r e , s i n g i m , m u l t s i , n o s i n g )

    w r i t e ( 6 , 2 0 0 ) ( s i n g r e ( k ) , s i n g i m ( k ) , m u l t s i ( k ) , k = 1 , n o s i n g )

    d o 2 i t = 1 , n t

    t v a l = v t ( i t )

    t t = d b l e ( t v a l )

    i f ( t v a l . g t . d e m a x ) t h e n

    f v = 0 . 0

    4 2

  • 7/27/2019 Prog Numerically

    43/57

    e l s e

    f v = n v ( t v a l )

    e n d i f

    i f ( a b s ( f v ) . g t . 1 . 0 ) t h e n

    a l f a = ` R '

    e l s e

    a l f a = ` A '

    e n d i f

    d o 3 i d = 1 , i c + 2

    c a l l t a p a r ( t v a l , i d , n o s i n g , s i n g r e , s i n g i m , m u l t s i , i c ,

    * l a m , s i g , n u , n o p t s )

    i f ( i d . e q . 1 ) t h e n

    i f ( t v a l . g t . d e m a x ) t h e n

    w r i t e ( 6 , * ) t v a l , l a m , s i g , n u

    e l s e

    w r i t e ( 6 , * ) t v a l , l a m , s i g , n u , f v

    e n d i f

    e n d i f

    c a l l t s u m ( a p , l a m , s i g , n u , n o p t s , t v a l , i n v f , i e r )

    i f ( i e r . e q . 0 ) t h e n

    p s e r r = ( f v - i n v f ) / e x p ( t t * s i g )

    i f ( a l f a . e q . ` R ' ) t h e n

    e r r o r = ( f v - i n v f ) / f v

    e l s e

    e r r o r = f v - i n v f

    e n d i f

    w r i t e ( 6 , * ) i d , n o p t s , i n v f , p s e r r , e r r o r , a l f a

    e l s e

    w r i t e ( 6 , * ) i d , n o p t s , i n v f , i e r

    i f ( t v a l . g t . e m a x . a n d . t v a l . l t . d e m a x ) t h e n

    d i n v f = l a m / n o p t s * e x p ( t t * s i g ) * i n v f

    p s e r r = ( f v - d i n v f ) / e x p ( t t * s i g )

    e r r o r = ( f v - d i n v f ) / f v

    w r i t e ( 6 , * ) d i n v f , p s e r r , e r r o r , a l f a

    e n d i f

    e n d i f

    3 c o n t i n u e

    4 3

  • 7/27/2019 Prog Numerically

    44/57

    2 c o n t i n u e

    s t o p

    2 0 0 f o r m a t ( ` s i n g u l a r i t i e s a n d t h e i r m u l t i p l i c i t i e s ' /

    * ( 2 ( 2 x , e 1 2 . 6 ) , 2 x , I 2 ) )

    e n d

    s u b r o u t i n e t a p a r ( t v a l , d e c d i g , n o s i n g , s i n g r e , s i n g i m , m u l t s i , i c ,

    * l a m , s i g , n u , n o p t s )

    c T h i s s u b r o u t i n e e v a l u a t e s t h e g e o m e t r i c a l p a r a m e t e r s

    c l a m ( b d a ) , s i g ( m a ) a n d n u f o r t h e T a l b o t c o n t o u r a n d t h e

    c a c c u r a c y p a r a m e t e r ( n o p t s )

    i m p l i c i t r e a l ( a - h , o - z )

    r e a l l a m , n u

    r e a l p i

    l o g i c a l c a s o 1

    i n t e g e r i c , d e c d i g , d d

    d i m e n s i o n s i n g r e ( n o s i n g ) , s i n g i m ( n o s i n g ) , m u l t s i ( n o s i n g )

    d a t a p i / 0 . 0 /

    i f ( p i . e q . 0 . 0 ) p i = 4 . * a t a n ( 1 . 0 )

    c a s o 1 = . t r u e .

    o m e g a = 0 . 4 * ( i c + 1 )

    s i g 0 = 0 . 0

    p m a x = s i n g r e ( 1 )

    k m a x = 1

    i f ( n o s i n g . e q . 1 ) g o t o 3

    d o j = 1 , n o s i n g

    i f ( s i n g r e ( j ) . g t . p m a x ) p m a x = s i n g r e ( j )

    i f ( m u l t s i ( j ) . g t . m u l t s i ( k m a x ) ) k m a x = j

    e n d d o

    3 i f ( p m a x . g t . s i g 0 ) s i g 0 = p m a x

    r d = 0 . 0

    s i d = 0 . 0

    t e t d = p i

    d o 7 j = 1 , n o s i n g

    i f ( s i n g i m ( j ) . l e . 0 . 0 ) g o t o 7

    c a s o 1 = . f a l s e .

    4 4

  • 7/27/2019 Prog Numerically

    45/57

    e t a j = a t a n 2 ( - s i n g r e ( j ) + s i g 0 , s i n g i m ( j ) )

    t e t j = e t a j + p i / 2 .

    r j = s i n g i m ( j ) / t e t j

    i f ( r d . g e . r j ) g o t o 7

    r d = r j

    t e t d = t e t j

    i d = j

    7 c o n t i n u e

    i f ( c a s o 1 ) g o t o 8

    s r d = s i n g r e ( i d ) - s i g 0

    s i d = s i n g i m ( i d )

    m d = m u l t s i ( i d )

    v = s i d * t v a l

    o m e g a = m i n ( o m e g a + v / 2 . 0 , 2 . 0 * ( i c + 1 ) / 3 . 0 )

    i f ( 1 . 8 * v . g t . o m e g a * t e t d ) g o t o 9

    c a s o 1 = . t r u e .

    8 l a m = o m e g a / t v a l

    s i g = s i g 0

    n u = 1 . 0

    g o t o 1 0

    9 c a s o 1 = . f a l s e .

    p k = 1 . 6 + 1 2 . 0 / ( v + 2 5 . 0 )

    = 1 . 0 5 + 1 0 5 0 . / m a x ( 5 5 3 . 0 , 8 0 0 . 0 - v )

    p m u = ( o m e g a / t v a l + s i g 0 - p m a x ) / ( p k / - 1 . 0 / t a n ( ) )

    l a m = p k * p m u /

    s i g = p m a x - p m u / t a n ( )

    n u = s i d / p m u

    1 0 n 1 = 0

    e = ( 2 . 3 * d e c d i g + o m e g a ) / ( l a m + t v a l )

    i f ( e . g t . 4 . 4 ) g o t o 1 1

    u n r o = ( 1 6 . 0 + 4 . 3 * e ) / ( 2 4 . 8 - 2 . 5 * e )

    g o t o 1 3

    1 1 i f ( e . g t . 1 0 . 0 ) g o t o 1 2

    u n r o = ( 5 0 . 0 + 3 . 0 * e ) / ( 1 2 9 . 0 / e - 4 . 0 )

    g o t o 1 3

    1 2 u n r o = ( 4 4 . 0 + 1 9 . 0 * e ) / ( 2 5 6 . 0 / e + 0 . 4 )

    4 5

  • 7/27/2019 Prog Numerically

    46/57

    1 3 n 1 = l a m * t v a l * ( u n r o + ( n u - 1 . 0 ) / 2 . 0 )

    n 1 = n 1 + 1

    n 0 = 0

    n 2 = 0

    i f ( s i d . e q . 0 . 0 ) g o t o 1 5

    d d = d e c d i g + 2 * m i n ( m d - 1 , 1 ) + m d / 4

    i f ( . n o t . c a s o 1 . o r . ( m d . e q . 0 ) ) g o t o 1 4

    p = s r d / l a m

    q = s i d / l a m

    c a l l i n v p c ( p , q , t e t d , u , p i )

    i f ( u . l e . 0 . 0 ) g o t o 1 4

    n 0 = ( 2 . 3 * d d + s r d * t v a l ) / u

    n 0 = n 0 + 1

    1 4 g a m m = ( s i g - s i g 0 ) / l a m

    y = v / 1 0 0 0 . 0

    e t a = m i n ( 1 . 7 8 , 1 . 2 3 6 + 0 . 0 0 6 4 * ( 1 . 7 8 * * d d ) )

    e t a = e t a * ( 1 . 0 9 - y * ( 0 . 9 2 - 0 . 8 * y ) )

    n 2 = e t a * n u * ( 2 . 3 * d d + o m e g a ) / ( 3 . 0 + 4 . 0 * g a m m + 1 . 0 / e x p ( g a m m ) )

    n 2 = n 2 + 1

    n o p t s = m a x ( n 0 , n 1 )

    n o p t s = m a x ( n 2 , n o p t s )

    r e t u r n

    1 5 d d = d e c d i g + 2 * m i n ( m u l t s i ( k m a x ) - 1 , 1 ) + m u l t s i ( k m a x ) / 4

    n 2 = ( 2 . 3 * d d + o m e g a ) / 2 . 0

    n 2 = n 2 + 1

    i c m 1 = i c - 1

    i f ( d d . l t . i c m 1 ) g o t o 1 7

    q = 0 . 0

    d o 1 6 l = 1 , n o s i n g

    i f ( m u l t s i ( l ) . e q . 0 ) g o t o 1 6

    d d = d e c d i g + 2 * m i n ( m u l t s i ( l ) - 1 , 1 ) + m u l t s i ( l ) / 4

    s r d = s i n g r e ( l ) - s i g 0

    i f ( . n o t . ( d d . g e . i c m 1 . a n d . s r d . l t . 0 . 0 ) ) g o t o 1 6

    p = s r d / l a m

    c a l l i n v p c ( p , q , t e t d , u , p i )

    i f ( u . l e . 0 . 0 ) g o t o 1 6

    n 0 l = ( 2 . 3 * d d + t v a l * s r d ) / u

    4 6

  • 7/27/2019 Prog Numerically

    47/57

    i f ( n 0 l . g t . n 0 ) n 0 = n 0 l

    1 6 c o n t i n u e

    n 0 = n 0 + 1

    1 7 n o p t s = m a x ( n 0 , n 1 )

    n o p t s = m a x ( n 2 , n o p t s )

    r e t u r n

    e n d

    s u b r o u t i n e t s u m ( a p , l a m , s i g , n u , n o p t s , t v a l , n v , i e r )

    c T h i s r o u t i n e g i v e s t h e t r a p e z o i d a l r u l e a p p r o x i m a t i o n

    c f o r t h e i n v e r s e L a p l a c e t r a n s f o r m

    i m p l i c i t r e a l ( a - h , o - z )

    r e a l l a m , n u

    r e a l p i

    e x t e r n a l a p

    c o m p l e x a p , s ,

    r e a l r 1 m a c h ( 2 ) , r 1

    d a t a r 1 m a c h ( 1 ) / Z ' 0 0 8 0 0 0 0 0 ' /

    d a t a r 1 m a c h ( 2 ) / Z ' 7 f 7 f ' /

    d a t a p i / 0 . 0 /

    e l i m = l o g ( r 1 m a c h ( 1 ) )

    i f ( p i . e q . 0 . 0 ) p i = 4 . 0 * a t a n ( 1 . 0 )

    p i o v n = p i / o a t ( n o p t s )

    i e r = 0

    t a u = l a m * t v a l

    p s i = p i o v n * t a u * n u

    c = c o s ( p s i )

    b r = 0

    b i = 0

    d b r = 0

    d b i = 0

    n m 1 = n o p t s - 1

    n v = 0

    i f ( n m 1 . e q . 0 ) g o t o 5

    c R e i n s c h a l g o r i t h m

    i f ( c . g t . 0 ) g o t o 2

    c C a s e c o s ( p s i )

    0

    u = 4 . 0 * c o s ( p s i / 2 ) * * 2

    4 7

  • 7/27/2019 Prog Numerically

    48/57

    d o k = n m 1 , 1 , - 1

    t h e t a = k * p i o v n

    a l p h a = t h e t a * c o s ( t h e t a ) / s i n ( t h e t a )

    b e t a = t h e t a + a l p h a * ( a l p h a - 1 . 0 ) / t h e t a

    s r = l a m * a l p h a + s i g

    s i = l a m * n u * t h e t a

    s = c m p l x ( s r , s i )

    = a p ( s )

    g = r e a l ( )

    h = i m a g ( )

    a r g = a l p h a * t a u

    i f ( a r g . l e . e l i m ) t h e n

    e a t = 0 . 0

    e l s e

    e a t = e x p ( a r g )

    e n d i f

    b r = d b r - b r

    b i = d b i - b i

    d b r = u * b r - d b r + e a t * ( g * n u - h * b e t a )

    d b i = u * b i - d b i + e a t * ( h * n u + g * b e t a )

    e n d d o

    b r = d b r - b r

    b i = d b i - b i

    d b r = u * b r - d b r

    g o t o 4

    c C a s e c o s ( p s i ) > 0

    2 u = - 4 . 0 * s i n ( p s i / 2 ) * * 2

    d o k = n m 1 , 1 , - 1

    t h e t a = k * p i o v n

    a l p h a = t h e t a * c o s ( t h e t a ) / s i n ( t h e t a )

    b e t a = t h e t a + a l p h a * ( a l p h a - 1 . 0 ) / t h e t a

    s r = l a m * a l p h a + s i g

    s i = l a m * n u * t h e t a

    s = c m p l x ( s r , s i )

    = a p ( s )

    g = r e a l ( )

    h = i m a g ( )

    a r g = a l p h a * t a u

    4 8

  • 7/27/2019 Prog Numerically

    49/57

    i f ( a r g . l e . e l i m ) t h e n

    e a t = 0 . 0

    e l s e

    e a t = e x p ( a r g )

    e n d i f

    b r = d b r + b r

    b i = d b i + b i

    d b r = u * b r + d b r + e a t * ( g * n u - h * b e t a )

    d b i = u * b i + d b i + e a t * ( h * n u + g * b e t a )

    e n d d o

    b r = d b r + b r

    b i = d b i + b i

    d b r = u * b r + d b r

    c e n d o f R e i n s c h a l g o r i t h m

    4 n v = d b r - b r * u / 2 . 0 - b i * s i n ( p s i )

    5 s r = l a m + s i g

    s = c m p l x ( s r )

    = a p ( s )

    g = r e a l ( )

    n v = ( n v + n u * e x p ( t a u ) * g / 2 . 0 )

    i f ( n v . e q . 0 . 0 ) r e t u r n

    i f ( n v . g t . 0 . 0 ) t h e n

    s i g n u m = 1 . 0

    e l s e

    s i g n u m = - 1 . 0

    e n d i f

    c o s t = l o g ( r 1 m a c h ( 2 ) )

    o f = s i g * t v a l + l o g ( l a m * a b s ( n v ) / n o p t s )

    i f ( o f . g t . c o s t ) t h e n

    i e r = 1

    w r i t e ( 6 , * ) ` i e r = ' , i e r

    e l s e

    n v = e x p ( o f ) * s i g n u m

    e n d i f

    r e t u r n

    e n d

    4 9

  • 7/27/2019 Prog Numerically

    50/57

    s u b r o u t i n e i n v p c ( p , q , t h e t a , u , p i )

    i m p l i c i t r e a l ( a - h , o - z )

    r = p * p + q * q

    r = s q r t ( r )

    x = 1 3 . 0 / ( 5 . 0 - 2 * p - q - 0 . 4 5 * e x p ( p ) )

    y = 2 * p i - x

    k = 1

    1 0 0 c o n t i n u e

    a n g = y - t h e t a

    s = s i n ( a n g )

    c = c o s ( a n g )

    b = q - y

    e = - b / s

    a r g = e / r

    i f ( a r g . l e . 0 . 0 ) t h e n

    u = - 1 . 0

    g o t o 2 0 0

    e n d i f

    u = l o g ( a r g )

    g = p + b * c / s + u

    d y = b * g / ( 1 . 0 + e * ( e - 2 . 0 * c ) )

    i f ( a b s ( d y ) . l t . 0 . 0 0 0 1 ) g o t o 2 0 0

    i f ( k . g e . 1 0 0 ) g o t o 2 0 0

    k = k + 1

    y = y + d y

    g o t o 1 0 0

    2 0 0 c o n t i n u e

    r e t u r n

    e n d

    c o m p l e x f u n c t i o n a p ( s )

    c o m p l e x s , a , b , I

    a p = l o g ( s ) / s

    r e t u r n

    e n d

    s u b r o u t i n e s i n g s ( n d i m , s i n g r e , s i n g i m , m u l t s i , n o s i n g )

    i m p l i c i t r e a l ( a - h , o - z )

    d i m e n s i o n s i n g r e ( n d i m ) , s i n g i m ( n d i m ) , m u l t s i ( n d i m )

    5 0

  • 7/27/2019 Prog Numerically

    51/57

    n o s i n g = 1

    s i n g r e ( 1 ) = 0 . 0

    s i n g i m ( 1 ) = 0 . 0

    m u l t s i ( 1 ) = 0

    r e t u r n

    e n d

    r e a l f u n c t i o n n v ( t )

    r e a l a

    w r i t e ( 6 , * ) ` t = ' , t

    a = d b l e ( t )

    n v = - 0 . 5 7 7 2 1 5 6 6 4 9 0 1 5 3 2 8 6 - l o g ( a )

    r e t u r n

    e n d

    5 1

  • 7/27/2019 Prog Numerically

    52/57

    M a t h e m a t i c a p r o g r a m f o r T a l b o t ' s m e t h o d

    T h i s p r o g r a m i s t a k e n f r o m A b a t e a n d V a l k o [ 1 ] . W e r e p r o d u c e t h i s

    p r o g r a m a n d g i v e t h e r e s u l t s w h e n

    f ( s ) = 1 = ( s

    3

    8 ) i n C h a p t e r 1 0 .

    F T [ F ; t ; M ] : = M o d u l e [ f n p , r , S , t h e t a , s i g m a g ,

    n p = M a x [ M , $ M a c h i n e P r e c i s i o n ] ; r = S e t P r e c i s i o n [ 2 M / ( 5 t ) , n p ] ;

    S = r t h e t a ( C o t [ t h e t a ] + I ) ;

    s i g m a = t h e t a + ( t h e t a C o t [ t h e t a ] - 1 ) C o t [ t h e t a ] ;

    ( r / M ) P l u s @ @ A p p e n d [ T a b l e [ R e [ E x p [ t S ] ( 1 + I s i g m a ) F [ S ] ] ,

    ft h e t a , P i / M , ( M - 1 ) P i / M , P i / M

    g] ,

    ( 1 / 2 ) E x p [ r t ] F [ r ] ] ]

    W h e n

    f ( s ) = 1 = ( s

    3

    8 ) a n d w e r e q u i r e t h e i n v e r s e t r a n s f o r m f o r

    t = 0 : 5 ; 1 ;

    ; 2

    6

    w e n e e d t o i m p l e m e n t t h e a b o v e w i t h t h e

    i n s t r u c t i o n

    D o [ P r i n t [ F T [

    1

    #

    3

    8

    & , 2

    k

    , 3 0 0 ] ] , f

    k , - 1 , 6 g

    ]

    M a t h e m a t i c a p r o g r a m f o r G a v e r ' s m e t h o d

    A b a t e a n d V a l k o g i v e a w e b r e f e r e n c e f o r t h e i r G W R ( G a v e r W y n n

    r h o ) a l g o r i t h m . T h e p r o g r a m b e l o w w a s w r i t t e n i n d e p e n d e n t l y b y

    m y c o l l e a g u e D r . R . B e h r e n d .

    F [ f , n , t , M ] : = M o d u l e

    n p , a , n p = M a x [ M , $ M a c h i n e P r e c i s i o n ] ;

    a = S e t P r e c i s i o n

    L o g [ 2 ]

    t

    , n p

    ;

    ( 2 n ) !

    n ! ( n 1 ) !

    a S u m [ (

    1 )

    k

    B i n o m i a l [ n , k ] f [ ( k + n ) a ] , f

    k , 0 , n g

    ]

    R [ f , i , 0 , t , M ] : = R [ f , i , 0 , t , M ] = 0 ;

    R [ f , i , 1 , t , M ] : = R [ f , i , 1 , t , M ] = F [ f , i , t , M ] ;

    R [ f , i , k , t , M ] : = R [ f , i , k , t , M ]

    = R [ f , i + 1 , k - 2 , t , M ] +

    k - 1

    R [ f , i + 1 , k - 1 , t , M ] - R [ f , i , k - 1 , t , M ]

    T h u s i f w e w a n t e d t o e v a l u a t e t h e i n v e r s e t r a n s f o r m o f 1 = ( s

    2

    + 1 )

    f o r t = 0 : 5 ; 1 ;

    ; 2

    6

    w e n e e d t o i m p l e m e n t t h e a b o v e w i t h t h e

    i n s t r u c t i o n

    5 2

  • 7/27/2019 Prog Numerically

    53/57

    D o [ P r i n t [ R [

    1

    #

    2

    + 1

    & , 1 , 7 5 , 2

    k

    , 3 0 0 ] ] , f

    k , - 1 , 6 g

    ]

    5 3

  • 7/27/2019 Prog Numerically

    54/57

    P r o g r a m f o r A p p l i c a t i o n 1

    G a v e r ' s m e t h o d

    c U s e s G a v e r m e t h o d i n c o n j u n c t i o n w i t h t h e - a l g o r i t h m

    c R e q u i r e s i n p u t o f o d d i n t e g e r n

    4 5

    c R e q u i r e s i n p u t o f v a r i a b l e t

    c R e q u i r e s a f u n c t i o n s u b r o u t i n e f u n c t ( s , f ) t o

    c e v a l u a t e t h e L a p l a c e t r a n s f o r m

    f ( s ) f o r r e a l s .

    i n t e g e r n

    r e a d ( 5 , * ) n

    c a l l g a v e r ( n )

    s t o p

    e n d

    s u b r o u t i n e g a v e r ( n )

    r e a l r h o 1 ( 4 5 ) , r h o 2 ( 4 5 ) , a

    m = n / 2

    i f ( n . e q . 2 * m ) g o t o 1 0 0

    d o i = 1 , n

    r h o 1 ( i ) = 0

    e n d d o

    c a l l s e q u e n c e ( n , r h o 2 )

    d o k = 1 , n - 1

    d o i = 1 , n - k

    r h o 1 ( i ) = r h o 1 ( i + 1 ) + o a t ( k ) / ( r h o 2 ( i + 1 ) - r h o 2 ( i ) )

    w r i t e ( 6 , * ) r h o 1 ( i )

    e n d d o

    w r i t e ( 6 , * ) ` n e w c y c l e '

    d o i = 1 , n - k

    a = r h o 1 ( i )

    r h o 1 ( i ) = r h o 2 ( i )

    r h o 2 ( i ) = a

    e n d d o

    e n d d o

    g o t o 2 0 0

    1 0 0 w r i t e ( 6 , * ) ` E r r o r , n n o t o d d '

    2 0 0 r e t u r n

    5 4

  • 7/27/2019 Prog Numerically

    55/57

  • 7/27/2019 Prog Numerically

    56/57

    1 0 0 y 0 = x * x * x - ( ( s + 4 ) / 3 ) * x * x + ( 1 . 0 / 3 . 0 )

    y 1 = 3 * x * x - 2 * ( ( s + 4 ) / 3 ) * x

    z =