[SciPy-dev] scipy.interpolate.fitpack patch

Nils Wagner nwagner at iam.uni-stuttgart.de
Thu Feb 8 06:44:18 EST 2007


John Travers wrote:
> On 07/02/07, Nils Wagner <nwagner at iam.uni-stuttgart.de> wrote:
>   
>> John Travers wrote:
>>     
>>> Hi all,
>>>
>>> Bugs are very welcome!
>>>
>>>       
> ...
>   
>> Arrays are not almost equal
>>
>> (shapes (4,), (5,) mismatch)
>>  x: array([  3.14181593,   6.28332425,   9.42469672,  12.56632768])
>>  y: array([  0.        ,   3.14159265,   6.28318531,   9.42477796,
>> 12.56637061])
>>     
>
> Hi Nils,
> This seems strange to me. It is not finding the first root.Can you run
>
> /usr/lib64/python2.4/site-packages/scipy/interpolate/fitpack.py 3
>
> and
>
> /usr/lib64/python2.4/site-packages/scipy/sandbox/spline/fitpack.py 3
>
> and post the output please.
>
> Thanks!
> John
> _______________________________________________
> Scipy-dev mailing list
> Scipy-dev at scipy.org
> http://projects.scipy.org/mailman/listinfo/scipy-dev
>   
Sure.
python -i /usr/lib64/python2.4/site-packages/scipy/sandbox/spline/fitpack.py
******************************************
        Tests of splrep and splev
******************************************

f = sin(x)  s=S_k(x;t,c)  x in [0.0, 6.2830000000000004] > [0.0,
6.2830000000000004]
 per=0 s=9.9999999999999995e-07 Evaluation at the middle of nodes
 k :  |f-s|^2  |f'-s'| |f''-.. |f'''-. |f''''- |f'''''
 1 :  8.1e-04 7.3e-02
 2 :  2.3e-05 3.3e-04 2.3e-01
 3 :  7.1e-07 4.4e-05 2.4e-03 2.9e-01
 4 :  9.2e-07 1.1e-04 6.3e-03 1.3e-01 1.4e+00
 5 :  8.8e-07 6.9e-05 3.5e-03 7.0e-02 6.0e-01 2.4e+00

f = sin(x)  s=S_k(x;t,c)  x in [0.0, 6.2830000000000004] > [0.0,
6.2830000000000004]
 per=0 s=0 Evaluation at the middle of nodes
 k :  |f-s|^2  |f'-s'| |f''-.. |f'''-. |f''''- |f'''''
 1 :  7.8e-04 7.3e-02
 2 :  1.5e-07 9.3e-04 1.6e-01
 3 :  2.3e-09 3.7e-06 4.3e-04 7.5e-02
 4 :  4.7e-11 1.4e-06 2.8e-04 1.5e-02 4.4e-01
 5 :  7.5e-13 2.8e-08 6.1e-06 3.9e-04 1.0e-02 1.7e-01

f = sin(x)  s=S_k(x;t,c)  x in [0.0, 6.2830000000000004] > [0.0,
6.2830000000000004]
 per=0 s=0 Evaluation at knots
 k :  |f-s|^2  |f'-s'| |f''-.. |f'''-. |f''''- |f'''''
 1 :  0.0e+00 2.5e-01
 2 :  1.9e-07 1.9e-03 3.6e-01
 3 :  2.0e-31 5.6e-06 1.4e-03 2.6e-01
 4 :  6.9e-11 2.7e-06 5.4e-04 3.0e-02 7.1e-01
 5 :  5.0e-31 5.4e-08 1.2e-05 7.7e-04 1.8e-02 3.5e-01

f = sin(x)  s=S_k(x;t,c)  x in [0.0, 6.2830000000000004] > [0.0,
6.2830000000000004]
 per=1 s=0 Evaluation at the middle of nodes
 k :  |f-s|^2  |f'-s'| |f''-.. |f'''-. |f''''- |f'''''
 1 :  7.8e-04 7.3e-02
 2 :  1.5e-07 9.3e-04 1.6e-01
 3 :  2.3e-09 3.7e-06 4.3e-04 7.5e-02
 4 :  4.7e-11 1.4e-06 2.8e-04 1.5e-02 4.4e-01
 5 :  7.5e-13 2.8e-08 6.1e-06 3.9e-04 1.0e-02 1.7e-01

f = sin(x)  s=S_k(x;t,c)  x in [0.0, 6.2830000000000004] > [0.0,
6.2830000000000004]
 per=1 s=0 Evaluation at knots
 k :  |f-s|^2  |f'-s'| |f''-.. |f'''-. |f''''- |f'''''
 1 :  0.0e+00 2.5e-01
 2 :  1.9e-07 1.9e-03 3.6e-01
 3 :  2.0e-31 5.6e-06 1.4e-03 2.6e-01
 4 :  6.9e-11 2.7e-06 5.4e-04 3.0e-02 7.1e-01
 5 :  5.0e-31 5.4e-08 1.2e-05 7.7e-04 1.8e-02 3.5e-01

f = sin(x)  s=S_k(x;t,c)  x in [0.0, 4.7119999999999997] > [0.0,
4.7119999999999997]
 per=0 s=0 Evaluation at the middle of nodes
 k :  |f-s|^2  |f'-s'| |f''-.. |f'''-. |f''''- |f'''''
 1 :  2.4e-04 5.1e-02
 2 :  5.9e-08 5.8e-05 4.6e-02
 3 :  3.2e-10 5.6e-06 1.5e-03 1.2e-01
 4 :  1.8e-12 2.3e-08 6.2e-06 4.7e-04 8.3e-02
 5 :  3.7e-14 4.6e-09 1.9e-06 2.4e-04 1.3e-02 3.3e-01

f = sin(x)  s=S_k(x;t,c)  x in [0.0, 6.2830000000000004] > [0.0,
4.7119999999999997]
 per=1 s=0.10000000000000001 Evaluation at the middle of nodes
 k :  |f-s|^2  |f'-s'| |f''-.. |f'''-. |f''''- |f'''''
 1 :  8.0e-02 1.4e+00
 2 :  9.4e-02 1.1e+00 4.8e+00
 3 :  6.4e-02 5.7e-01 3.8e+00 9.2e+00
 4 :  4.7e-03 1.2e-01 1.6e+00 7.4e+00 1.2e+01
 5 :  1.9e-04 4.3e-03 1.0e-01 1.1e+00 4.9e+00 9.9e+00
******************************************
        Tests of splint and spalde
******************************************

f = sin(x)  s=S_k(x;t,c)  x in [0.0, 6.2830000000000004] > [0.0,
6.2830000000000004]
 per=0 s=0 N=20 [a, b] = [0.0, 6.2830000000000004]  dx=0.628
 k :  int(s,[a,b]) Int.Error   Rel. error of s^(d)(dx) d = 0, .., k
 1    0.00000000   7.3e-17  0.0e+00  1.3e-01
 2    0.00000000   3.1e-17  2.2e-16  3.1e-03  1.7e-02
 3   -0.00000000   3.8e-18  2.2e-16  9.8e-05  1.1e-02  1.3e-01
 4    0.00000000   6.7e-16  2.2e-16  1.2e-04  8.9e-04  1.1e-02  1.3e-01
 5    0.00000000   1.1e-16  0.0e+00  1.4e-05  9.5e-05  1.1e-03  1.5e-02 
4.6e-02

f = sin(x)  s=S_k(x;t,c)  x in [0.0, 6.2830000000000004] > [0.0,
6.2830000000000004]
 per=1 s=0 N=20 [a, b] = [0.0, 6.2830000000000004]  dx=0.628
 k :  int(s,[a,b]) Int.Error   Rel. error of s^(d)(dx) d = 0, .., k
 1    0.00000000   7.3e-17  0.0e+00  1.3e-01
 2    0.00000000   3.1e-17  2.2e-16  3.1e-03  1.7e-02
 3   -0.00000000   3.8e-18  2.2e-16  9.8e-05  1.1e-02  1.3e-01
 4    0.00000000   6.7e-16  2.2e-16  1.2e-04  8.9e-04  1.1e-02  1.3e-01
 5    0.00000000   1.1e-16  0.0e+00  1.4e-05  9.5e-05  1.1e-03  1.5e-02 
4.6e-02

f = sin(x)  s=S_k(x;t,c)  x in [0.0, 6.2830000000000004] > [0.0,
6.2830000000000004]
 per=0 s=0 N=20 [a, b] = [0.628, 3.1419999999999999]  dx=0.628
 k :  int(s,[a,b]) Int.Error   Rel. error of s^(d)(dx) d = 0, .., k
 1    1.79411389   1.5e-02  0.0e+00  1.3e-01
 2    1.80893734   8.0e-05  2.2e-16  3.1e-03  1.7e-02
 3    1.80899266   2.4e-05  2.2e-16  9.8e-05  1.1e-02  1.3e-01
 4    1.80901586   1.1e-06  2.2e-16  1.2e-04  8.9e-04  1.1e-02  1.3e-01
 5    1.80901683   1.6e-07  0.0e+00  1.4e-05  9.5e-05  1.1e-03  1.5e-02 
4.6e-02

f = sin(x)  s=S_k(x;t,c)  x in [0.0, 6.2830000000000004] > [0.0,
6.2830000000000004]
 per=0 s=0 N=50 [a, b] = [0.628, 3.1419999999999999]  dx=0.628
 k :  int(s,[a,b]) Int.Error   Rel. error of s^(d)(dx) d = 0, .., k
 1    1.80663580   2.4e-03  0.0e+00  4.8e-02
 2    1.80901480   2.2e-06  2.2e-16  6.6e-04  6.3e-04
 3    1.80901636   6.3e-07  0.0e+00  1.5e-06  1.3e-03  4.7e-02
 4    1.80901699   1.2e-09  0.0e+00  1.6e-07  4.0e-06  6.0e-04  3.4e-03
 5    1.80901699   2.3e-10  0.0e+00  3.9e-09  4.4e-07  1.3e-06  1.4e-03 
4.8e-02
******************************************
        Tests of sproot
******************************************
  k  :     Roots of s(x) approx sin(x)  x in [0.0,15.0]:
  3  : [3.1418159268145143, 6.283324249558861, 9.4246967197029239,
12.566327676063914]
Note that if k is not 3, some roots are missed or incorrect
******************************************
        Tests of splprep, splrep, and splev
******************************************
 u = 0.628   N = 20
  k  :  [x(u), sin(x(u))]  Error of splprep  Error of splrep
  1  :  [3.867, -0.65600000000000003]    7.3e-03           7.3e-03
  2  :  [3.863, -0.66100000000000003]    2.4e-04           2.2e-04
  3  :  [3.863, -0.66100000000000003]    5.4e-05           1.4e-05
  4  :  [3.863, -0.66100000000000003]    7.9e-06           5.8e-07
  5  :  [3.863, -0.66100000000000003]    2.1e-05           2.8e-08
Derivatives of parametric cubic spline at u (first function):
 6.10627991049  11.9027895435  116.204926832
 u = 0.628   N = 50
  k  :  [x(u), sin(x(u))]  Error of splprep  Error of splrep
  1  :  [3.8650000000000002, -0.66100000000000003]    9.5e-04          
9.5e-04
  2  :  [3.8639999999999999, -0.66100000000000003]    2.3e-05          
1.1e-05
  3  :  [3.8639999999999999, -0.66100000000000003]    8.2e-07          
2.2e-07
  4  :  [3.8639999999999999, -0.66100000000000003]    1.5e-08          
4.4e-09
  5  :  [3.8639999999999999, -0.66100000000000003]    1.8e-09          
7.7e-11
Derivatives of parametric cubic spline at u (first function):
 6.11128630809  11.8744428128  111.000018594
******************************************
        Tests of bisplrep, bisplev
******************************************
5.77570681504e-06

----------------------------------------------------------------------------------------------------------------------------



python -i /usr/lib64/python2.4/site-packages/scipy/interpolate/fitpack.py
******************************************
        Tests of splrep and splev
******************************************

f = sin(x)  s=S_k(x;t,c)  x in [0.0, 6.2830000000000004] > [0.0,
6.2830000000000004]
 per=0 s=9.9999999999999995e-07 Evaluation at the middle of nodes
 k :  |f-s|^2  |f'-s'| |f''-.. |f'''-. |f''''- |f'''''
 1 :  8.1e-04 7.3e-02
 2 :  2.3e-05 3.3e-04 2.3e-01
 3 :  7.1e-07 4.4e-05 2.4e-03 2.9e-01
 4 :  9.2e-07 1.1e-04 6.3e-03 1.3e-01 1.4e+00
 5 :  8.8e-07 6.9e-05 3.5e-03 7.0e-02 6.0e-01 2.4e+00

f = sin(x)  s=S_k(x;t,c)  x in [0.0, 6.2830000000000004] > [0.0,
6.2830000000000004]
 per=0 s=0 Evaluation at the middle of nodes
 k :  |f-s|^2  |f'-s'| |f''-.. |f'''-. |f''''- |f'''''
 1 :  7.8e-04 7.3e-02
 2 :  1.5e-07 9.3e-04 1.6e-01
 3 :  2.3e-09 3.7e-06 4.3e-04 7.5e-02
 4 :  4.7e-11 1.4e-06 2.8e-04 1.5e-02 4.4e-01
 5 :  7.5e-13 2.8e-08 6.1e-06 3.9e-04 1.0e-02 1.7e-01

f = sin(x)  s=S_k(x;t,c)  x in [0.0, 6.2830000000000004] > [0.0,
6.2830000000000004]
 per=0 s=0 Evaluation at knots
 k :  |f-s|^2  |f'-s'| |f''-.. |f'''-. |f''''- |f'''''
 1 :  0.0e+00 2.5e-01
 2 :  1.9e-07 1.9e-03 3.6e-01
 3 :  2.0e-31 5.6e-06 1.4e-03 2.6e-01
 4 :  6.9e-11 2.7e-06 5.4e-04 3.0e-02 7.1e-01
 5 :  5.0e-31 5.4e-08 1.2e-05 7.7e-04 1.8e-02 3.5e-01

f = sin(x)  s=S_k(x;t,c)  x in [0.0, 6.2830000000000004] > [0.0,
6.2830000000000004]
 per=1 s=0 Evaluation at the middle of nodes
 k :  |f-s|^2  |f'-s'| |f''-.. |f'''-. |f''''- |f'''''
 1 :  7.8e-04 7.3e-02
 2 :  1.5e-07 9.3e-04 1.6e-01
 3 :  2.2e-09 5.2e-07 4.4e-05 7.0e-02
 4 :  4.1e-12 2.4e-08 6.3e-07 7.6e-04 1.6e-01
 5 :  1.2e-14 3.7e-12 2.5e-10 5.1e-07 4.3e-05 7.0e-02

f = sin(x)  s=S_k(x;t,c)  x in [0.0, 6.2830000000000004] > [0.0,
6.2830000000000004]
 per=1 s=0 Evaluation at knots
 k :  |f-s|^2  |f'-s'| |f''-.. |f'''-. |f''''- |f'''''
 1 :  6.3e-32 2.5e-01
 2 :  2.0e-06 1.9e-03 3.7e-01
 3 :  8.1e-31 3.3e-08 6.8e-04 2.5e-01
 4 :  1.4e-10 3.1e-08 1.3e-06 1.7e-03 3.6e-01
 5 :  5.9e-31 4.2e-13 1.9e-09 1.8e-08 6.8e-04 2.5e-01

f = sin(x)  s=S_k(x;t,c)  x in [0.0, 4.7119999999999997] > [0.0,
4.7119999999999997]
 per=0 s=0 Evaluation at the middle of nodes
 k :  |f-s|^2  |f'-s'| |f''-.. |f'''-. |f''''- |f'''''
 1 :  2.4e-04 5.1e-02
 2 :  5.9e-08 5.8e-05 4.6e-02
 3 :  3.2e-10 5.6e-06 1.5e-03 1.2e-01
 4 :  1.8e-12 2.3e-08 6.2e-06 4.7e-04 8.3e-02
 5 :  3.7e-14 4.6e-09 1.9e-06 2.4e-04 1.3e-02 3.3e-01

f = sin(x)  s=S_k(x;t,c)  x in [0.0, 6.2830000000000004] > [0.0,
4.7119999999999997]
 per=1 s=0.10000000000000001 Evaluation at the middle of nodes
 k :  |f-s|^2  |f'-s'| |f''-.. |f'''-. |f''''- |f'''''
 1 :  9.8e-01 1.0e+01
 2 :  7.2e-01 1.3e+01 2.5e+02
 3 :  7.2e-01 9.3e+00 1.5e+02 5.9e+03
 4 :  7.1e-01 1.2e+01 1.1e+02 8.9e+03 1.5e+05
 5 :  6.8e-01 1.0e+01 1.0e+02 2.5e+03 2.8e+05 1.5e+07
******************************************
        Tests of splint and spalde
******************************************

f = sin(x)  s=S_k(x;t,c)  x in [0.0, 6.2830000000000004] > [0.0,
6.2830000000000004]
 per=0 s=0 N=20 [a, b] = [0.0, 6.2830000000000004]  dx=0.628
 k :  int(s,[a,b]) Int.Error   Rel. error of s^(d)(dx) d = 0, .., k
 1    0.00000000   7.3e-17  0.0e+00  1.3e-01
 2    0.00000000   3.1e-17  2.2e-16  3.1e-03  1.7e-02
 3   -0.00000000   3.8e-18  2.2e-16  9.8e-05  1.1e-02  1.3e-01
 4    0.00000000   6.7e-16  2.2e-16  1.2e-04  8.9e-04  1.1e-02  1.3e-01
 5    0.00000000   1.1e-16  0.0e+00  1.4e-05  9.5e-05  1.1e-03  1.5e-02 
4.6e-02

f = sin(x)  s=S_k(x;t,c)  x in [0.0, 6.2830000000000004] > [0.0,
6.2830000000000004]
 per=1 s=0 N=20 [a, b] = [0.0, 6.2830000000000004]  dx=0.628
 k :  int(s,[a,b]) Int.Error   Rel. error of s^(d)(dx) d = 0, .., k
 1    0.00000000   1.1e-16  0.0e+00  1.3e-01
 2   -0.00000000   4.3e-16  2.2e-16  3.1e-03  1.7e-02
 3   -0.00000000   2.9e-16  4.4e-16  5.5e-05  8.3e-03  1.2e-01
 4   -0.00000000   4.5e-16  4.4e-16  1.6e-05  2.7e-04  2.3e-03  3.9e-02
 5   -0.00000000   1.1e-16  0.0e+00  2.0e-07  1.4e-05  4.1e-05  8.3e-03 
1.2e-01

f = sin(x)  s=S_k(x;t,c)  x in [0.0, 6.2830000000000004] > [0.0,
6.2830000000000004]
 per=0 s=0 N=20 [a, b] = [0.628, 3.1419999999999999]  dx=0.628
 k :  int(s,[a,b]) Int.Error   Rel. error of s^(d)(dx) d = 0, .., k
 1    1.79411389   1.5e-02  0.0e+00  1.3e-01
 2    1.80893734   8.0e-05  2.2e-16  3.1e-03  1.7e-02
 3    1.80899266   2.4e-05  2.2e-16  9.8e-05  1.1e-02  1.3e-01
 4    1.80901586   1.1e-06  2.2e-16  1.2e-04  8.9e-04  1.1e-02  1.3e-01
 5    1.80901683   1.6e-07  0.0e+00  1.4e-05  9.5e-05  1.1e-03  1.5e-02 
4.6e-02

f = sin(x)  s=S_k(x;t,c)  x in [0.0, 6.2830000000000004] > [0.0,
6.2830000000000004]
 per=0 s=0 N=50 [a, b] = [0.628, 3.1419999999999999]  dx=0.628
 k :  int(s,[a,b]) Int.Error   Rel. error of s^(d)(dx) d = 0, .., k
 1    1.80663580   2.4e-03  0.0e+00  4.8e-02
 2    1.80901480   2.2e-06  2.2e-16  6.6e-04  6.3e-04
 3    1.80901636   6.3e-07  0.0e+00  1.5e-06  1.3e-03  4.7e-02
 4    1.80901699   1.2e-09  0.0e+00  1.6e-07  4.0e-06  6.0e-04  3.4e-03
 5    1.80901699   2.3e-10  0.0e+00  3.9e-09  4.4e-07  1.3e-06  1.4e-03 
4.8e-02
******************************************
        Tests of sproot
******************************************
  k  :     Roots of s(x) approx sin(x)  x in [0.0,15.0]:
  1  : [3.8917895437452752, 7.0333244206998957, 10.174697656280109,
13.316162856466082]
  2  : [3.5167921082175266, 6.6583244127250936, 9.7996976309412744,
12.948449169566704]
  3  : [3.1418159268145143, 6.283324249558861, 9.4246967197029239,
12.566327676063914]
  4  : [3.5377683941038813, 6.6583251439401883, 9.7996965906036593,
12.991740973097126]
  5  : [6.1161081418555904e-18, 4.0693671011759172, 7.0333276059930698,
10.174703377002832, 13.532636947291909]
Note that if k is not 3, some roots are missed or incorrect
******************************************
        Tests of splprep, splrep, and splev
******************************************
 u = 0.628   N = 20
  k  :  [x(u), sin(x(u))]  Error of splprep  Error of splrep
  1  :  [3.867, -0.65600000000000003]    7.3e-03           7.3e-03
  2  :  [3.863, -0.66100000000000003]    2.4e-04           2.2e-04
  3  :  [3.863, -0.66100000000000003]    5.4e-05           1.4e-05
  4  :  [3.863, -0.66100000000000003]    7.9e-06           5.8e-07
  5  :  [3.863, -0.66100000000000003]    2.1e-05           2.8e-08
Derivatives of parametric cubic spline at u (first function):
 6.10627991049  11.9027895435  116.204926832
 u = 0.628   N = 50
  k  :  [x(u), sin(x(u))]  Error of splprep  Error of splrep
  1  :  [3.8650000000000002, -0.66100000000000003]    9.5e-04          
9.5e-04
  2  :  [3.8639999999999999, -0.66100000000000003]    2.3e-05          
1.1e-05
  3  :  [3.8639999999999999, -0.66100000000000003]    8.2e-07          
2.2e-07
  4  :  [3.8639999999999999, -0.66100000000000003]    1.5e-08          
4.4e-09
  5  :  [3.8639999999999999, -0.66100000000000003]    1.8e-09          
7.7e-11
Derivatives of parametric cubic spline at u (first function):
 6.11128630809  11.8744428128  111.000018594
******************************************
        Tests of bisplrep, bisplev
******************************************
5.77570681504e-06


Nils




More information about the SciPy-Dev mailing list