test_aseries.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. from sympy.core.function import PoleError
  2. from sympy.core.numbers import oo
  3. from sympy.core.singleton import S
  4. from sympy.core.symbol import Symbol
  5. from sympy.functions.elementary.exponential import (exp, log)
  6. from sympy.functions.elementary.miscellaneous import sqrt
  7. from sympy.functions.elementary.trigonometric import (cos, sin)
  8. from sympy.series.order import O
  9. from sympy.abc import x
  10. from sympy.testing.pytest import raises
  11. def test_simple():
  12. # Gruntz' theses pp. 91 to 96
  13. # 6.6
  14. e = sin(1/x + exp(-x)) - sin(1/x)
  15. assert e.aseries(x) == (1/(24*x**4) - 1/(2*x**2) + 1 + O(x**(-6), (x, oo)))*exp(-x)
  16. e = exp(x) * (exp(1/x + exp(-x)) - exp(1/x))
  17. assert e.aseries(x, n=4) == 1/(6*x**3) + 1/(2*x**2) + 1/x + 1 + O(x**(-4), (x, oo))
  18. e = exp(exp(x) / (1 - 1/x))
  19. assert e.aseries(x) == exp(exp(x) / (1 - 1/x))
  20. # The implementation of bound in aseries is incorrect currently. This test
  21. # should be commented out when that is fixed.
  22. # assert e.aseries(x, bound=3) == exp(exp(x) / x**2)*exp(exp(x) / x)*exp(-exp(x) + exp(x)/(1 - 1/x) - \
  23. # exp(x) / x - exp(x) / x**2) * exp(exp(x))
  24. e = exp(sin(1/x + exp(-exp(x)))) - exp(sin(1/x))
  25. assert e.aseries(x, n=4) == (-1/(2*x**3) + 1/x + 1 + O(x**(-4), (x, oo)))*exp(-exp(x))
  26. e3 = lambda x:exp(exp(exp(x)))
  27. e = e3(x)/e3(x - 1/e3(x))
  28. assert e.aseries(x, n=3) == 1 + exp(x + exp(x))*exp(-exp(exp(x)))\
  29. + ((-exp(x)/2 - S.Half)*exp(x + exp(x))\
  30. + exp(2*x + 2*exp(x))/2)*exp(-2*exp(exp(x))) + O(exp(-3*exp(exp(x))), (x, oo))
  31. e = exp(exp(x)) * (exp(sin(1/x + 1/exp(exp(x)))) - exp(sin(1/x)))
  32. assert e.aseries(x, n=4) == -1/(2*x**3) + 1/x + 1 + O(x**(-4), (x, oo))
  33. n = Symbol('n', integer=True)
  34. e = (sqrt(n)*log(n)**2*exp(sqrt(log(n))*log(log(n))**2*exp(sqrt(log(log(n)))*log(log(log(n)))**3)))/n
  35. assert e.aseries(n) == \
  36. exp(exp(sqrt(log(log(n)))*log(log(log(n)))**3)*sqrt(log(n))*log(log(n))**2)*log(n)**2/sqrt(n)
  37. def test_hierarchical():
  38. e = sin(1/x + exp(-x))
  39. assert e.aseries(x, n=3, hir=True) == -exp(-2*x)*sin(1/x)/2 + \
  40. exp(-x)*cos(1/x) + sin(1/x) + O(exp(-3*x), (x, oo))
  41. e = sin(x) * cos(exp(-x))
  42. assert e.aseries(x, hir=True) == exp(-4*x)*sin(x)/24 - \
  43. exp(-2*x)*sin(x)/2 + sin(x) + O(exp(-6*x), (x, oo))
  44. raises(PoleError, lambda: e.aseries(x))