test_aseries.py 2.3 KB

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