2
2
3
3
import sys
4
4
import numpy as np
5
- from scipy .special import gamma as sc_gamma
6
5
import sympy as sp
7
- from GaussLegendreRiemannSum import GaussLegendreRiemannSum
6
+ from scipy .special import gamma as sc_gamma
7
+ from pyfod .GaussLegendreRiemannSum import GaussLegendreRiemannSum
8
8
from pyfod .GaussLegendre import GaussLegendre
9
9
from pyfod .GaussLaguerre import GaussLaguerre
10
10
from pyfod .RiemannSum import RiemannSum
@@ -18,13 +18,13 @@ def fdc(f, start, finish, dt=1e-4, alpha=0.0, quadrature='GLegRS', **kwargs):
18
18
Q2 = quad (start = start , finish = finish - dt , alpha = alpha , ** kwargs )
19
19
I2 = Q2 .integrate (f = f )
20
20
21
- if quadrature == 'GLag ' :
21
+ if quadrature . lower () == 'glag ' :
22
22
extend_precision = True
23
23
else :
24
24
extend_precision = False
25
25
26
26
if extend_precision is True :
27
- fd = ( I1 - I2 )/ (dt * sp .gamma (1 - alpha ))
27
+ fd = float (( I1 - I2 )/ (dt * sp .gamma (1 - alpha ) ))
28
28
else :
29
29
fd = (I1 - I2 )/ (dt * sc_gamma (1 - alpha ))
30
30
# assemble output
@@ -33,13 +33,13 @@ def fdc(f, start, finish, dt=1e-4, alpha=0.0, quadrature='GLegRS', **kwargs):
33
33
34
34
def select_quadrature_method (quadrature ):
35
35
methods = dict (
36
- GLegRS = GaussLegendreRiemannSum ,
37
- GLag = GaussLaguerre ,
38
- GLeg = GaussLegendre ,
39
- RS = RiemannSum
36
+ glegrs = GaussLegendreRiemannSum ,
37
+ glag = GaussLaguerre ,
38
+ gleg = GaussLegendre ,
39
+ rs = RiemannSum
40
40
)
41
41
try :
42
- quad = methods [quadrature ]
42
+ quad = methods [quadrature . lower () ]
43
43
return quad
44
44
except KeyError :
45
45
print ('Invalid quadrature method specified: {}' .format (quadrature ))
@@ -57,6 +57,8 @@ def fcos(t):
57
57
def fexp (t ):
58
58
return np .exp (2 * t )
59
59
60
+ def fspexp (t ):
61
+ return sp .exp (2 * t )
60
62
61
63
start = 0.0
62
64
finish = 1.0
@@ -74,3 +76,20 @@ def fexp(t):
74
76
alpha = 0.9
75
77
out = fdc (f = fexp , alpha = alpha , start = start , finish = finish , dt = dt , NRS = NRS )
76
78
print ('D^{}[exp(2t)] = {} ({})' .format (alpha , out ['fd' ], 13.8153 ))
79
+
80
+ # Test Extended Precision - Gauss Laguerre Quadrature
81
+ # Test alpha = 0.0
82
+ alpha = 0.0
83
+ out = fdc (f = fspexp , alpha = alpha , start = start , finish = finish , dt = dt ,
84
+ quadrature = 'glag' )
85
+ print ('D^{}[exp(2t)] = {} ({})' .format (alpha , out ['fd' ], 7.38906 ))
86
+ # Test alpha = 0.1
87
+ alpha = 0.1
88
+ out = fdc (f = fspexp , alpha = alpha , start = start , finish = finish , dt = dt ,
89
+ quadrature = 'glag' )
90
+ print ('D^{}[exp(2t)] = {} ({})' .format (alpha , out ['fd' ], 7.95224 ))
91
+ # Test alpha = 0.9
92
+ alpha = 0.9
93
+ out = fdc (f = fspexp , alpha = alpha , start = start , finish = finish , dt = dt ,
94
+ quadrature = 'glag' , N = 32 , n_digits = 60 )
95
+ print ('D^{}[exp(2t)] = {} ({})' .format (alpha , out ['fd' ], 13.8153 ))
0 commit comments