test_pade.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. from __future__ import division, print_function, absolute_import
  2. from numpy.testing import (assert_array_equal, assert_array_almost_equal)
  3. from scipy.interpolate import pade
  4. def test_pade_trivial():
  5. nump, denomp = pade([1.0], 0)
  6. assert_array_equal(nump.c, [1.0])
  7. assert_array_equal(denomp.c, [1.0])
  8. nump, denomp = pade([1.0], 0, 0)
  9. assert_array_equal(nump.c, [1.0])
  10. assert_array_equal(denomp.c, [1.0])
  11. def test_pade_4term_exp():
  12. # First four Taylor coefficients of exp(x).
  13. # Unlike poly1d, the first array element is the zero-order term.
  14. an = [1.0, 1.0, 0.5, 1.0/6]
  15. nump, denomp = pade(an, 0)
  16. assert_array_almost_equal(nump.c, [1.0/6, 0.5, 1.0, 1.0])
  17. assert_array_almost_equal(denomp.c, [1.0])
  18. nump, denomp = pade(an, 1)
  19. assert_array_almost_equal(nump.c, [1.0/6, 2.0/3, 1.0])
  20. assert_array_almost_equal(denomp.c, [-1.0/3, 1.0])
  21. nump, denomp = pade(an, 2)
  22. assert_array_almost_equal(nump.c, [1.0/3, 1.0])
  23. assert_array_almost_equal(denomp.c, [1.0/6, -2.0/3, 1.0])
  24. nump, denomp = pade(an, 3)
  25. assert_array_almost_equal(nump.c, [1.0])
  26. assert_array_almost_equal(denomp.c, [-1.0/6, 0.5, -1.0, 1.0])
  27. # Testing inclusion of optional parameter
  28. nump, denomp = pade(an, 0, 3)
  29. assert_array_almost_equal(nump.c, [1.0/6, 0.5, 1.0, 1.0])
  30. assert_array_almost_equal(denomp.c, [1.0])
  31. nump, denomp = pade(an, 1, 2)
  32. assert_array_almost_equal(nump.c, [1.0/6, 2.0/3, 1.0])
  33. assert_array_almost_equal(denomp.c, [-1.0/3, 1.0])
  34. nump, denomp = pade(an, 2, 1)
  35. assert_array_almost_equal(nump.c, [1.0/3, 1.0])
  36. assert_array_almost_equal(denomp.c, [1.0/6, -2.0/3, 1.0])
  37. nump, denomp = pade(an, 3, 0)
  38. assert_array_almost_equal(nump.c, [1.0])
  39. assert_array_almost_equal(denomp.c, [-1.0/6, 0.5, -1.0, 1.0])
  40. # Testing reducing array
  41. nump, denomp = pade(an, 0, 2)
  42. assert_array_almost_equal(nump.c, [0.5, 1.0, 1.0])
  43. assert_array_almost_equal(denomp.c, [1.0])
  44. nump, denomp = pade(an, 1, 1)
  45. assert_array_almost_equal(nump.c, [1.0/2, 1.0])
  46. assert_array_almost_equal(denomp.c, [-1.0/2, 1.0])
  47. nump, denomp = pade(an, 2, 0)
  48. assert_array_almost_equal(nump.c, [1.0])
  49. assert_array_almost_equal(denomp.c, [1.0/2, -1.0, 1.0])