m2m模型翻译
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
3.0 KiB

6 months ago
  1. import sys
  2. from sympy.external import import_module
  3. from sympy.integrals.rubi.rubimain import LoadRubiReplacer
  4. matchpy = import_module("matchpy")
  5. if not matchpy:
  6. #bin/test will not execute any tests now
  7. disabled = True
  8. if sys.version_info[:2] < (3, 6):
  9. disabled = True
  10. from sympy.core.symbol import symbols, Symbol
  11. from sympy.functions import log
  12. from sympy.concrete.summations import Sum
  13. from sympy.core.numbers import (I, pi)
  14. from sympy.core.singleton import S
  15. from sympy.functions.elementary.exponential import log
  16. from sympy.functions.elementary.hyperbolic import atanh
  17. from sympy.functions.elementary.miscellaneous import sqrt
  18. from sympy.functions.elementary.trigonometric import (atan, cos, sin)
  19. from sympy.functions.special.hyper import hyper
  20. from sympy.simplify.simplify import simplify
  21. from sympy.integrals.rubi.utility_function import rubi_test
  22. from sympy.testing.pytest import SKIP
  23. a, b, c, d, e, f, x, m, n, p, k = symbols('a b c d e f x m n p k', real=True, imaginary=False)
  24. @SKIP
  25. def test_rubi_integrate():
  26. from sympy.integrals.rubi.rubimain import rubi_integrate
  27. assert rubi_integrate(x, x) == x**2/2
  28. assert rubi_integrate(x**2, x) == x**3/3
  29. assert rubi_integrate(x**3, x) == x**4/4
  30. assert rubi_integrate(x**a, x) == x**(a + S(1))/(a + S(1))
  31. assert rubi_integrate(S(1)/x, x) == log(x)
  32. assert rubi_integrate(a*x, x) == a*(S(1)/S(2))*x**S(2)
  33. assert rubi_integrate(1/(x**2*(a + b*x)**2), x) == -b/(a**2*(a + b*x)) - 1/(a**2*x) - 2*b*log(x)/a**3 + 2*b*log(a + b*x)/a**3
  34. assert rubi_integrate(x**6/(a + b*x)**2, x) == (-a**6/(b**7*(a + b*x)) - S(6)*a**5*log(a + b*x)/b**7 + 5*a**4*x/b**6 - S(2)*a**3*x**2/b**5 + a**2*x**3/b**4 - a*x**4/(S(2)*b**3) + x**5/(S(5)*b**2))
  35. assert rubi_integrate(1/(x**2*(a + b*x)**2), x) == -b/(a**2*(a + b*x)) - 1/(a**2*x) - 2*b*log(x)/a**3 + 2*b*log(a + b*x)/a**3
  36. assert rubi_integrate(a + S(1)/x, x) == a*x + log(x)
  37. assert rubi_integrate((a + b*x)**2/x**3, x) == -a**2/(2*x**2) - 2*a*b/x + b**2*log(x)
  38. assert rubi_integrate(a**3*x, x) == S(1)/S(2)*a**3*x**2
  39. assert rubi_integrate((a + b*x)**3/x**3, x) == -a**3/(2*x**2) - 3*a**2*b/x + 3*a*b**2*log(x) + b**3*x
  40. assert rubi_integrate(x**3*(a + b*x), x) == a*x**4/4 + b*x**5/5
  41. assert rubi_integrate((b*x)**m*(d*x + 2)**n, x) == 2**n*(b*x)**(m + 1)*hyper((-n, m + 1), (m + 2,), -d*x/2)/(b*(m + 1))
  42. assert rubi_test(rubi_integrate(1/(1 + x**5), x), x, log(x + S(1))/S(5) + S(2)*Sum(-log((S(2)*x - S(2)*cos(pi*(S(2)*k/S(5) + S(-1)/5)))**S(2) - S(4)*sin(S(2)*pi*k/S(5) + S(3)*pi/S(10))**S(2) + S(4))*cos(pi*(S(2)*k/S(5) + S(-1)/5))/S(2) - (-S(2)*cos(pi*(S(2)*k/S(5) + S(-1)/5))**S(2) + S(2))*atan((-x/cos(pi*(S(2)*k/S(5) + S(-1)/5)) + S(1))/sqrt(-(cos(S(2)*pi*k/S(5) - pi/S(5)) + S(-1))*(cos(S(2)*pi*k/S(5) - pi/S(5)) + S(1))/cos(S(2)*pi*k/S(5) - pi/S(5))**S(2)))/(S(2)*sqrt(-(cos(S(2)*pi*k/S(5) - pi/S(5)) + S(-1))*(cos(S(2)*pi*k/S(5) - pi/S(5)) + S(1))/cos(S(2)*pi*k/S(5) - pi/S(5))**S(2))*cos(pi*(S(2)*k/S(5) + S(-1)/5))), (k, S(1), S(2)))/S(5), _numerical=True)