def test_matplotlib_advanced(): """Examples from the 'advanced' notebook.""" try: name = 'test' tmp_file = TmpFileManager.tmp_file s = summation(1 / x**y, (x, 1, oo)) p = plot(s, (y, 2, 10)) p.save(tmp_file('%s_advanced_inf_sum' % name)) p = plot(summation(1 / x, (x, 1, y)), (y, 2, 10), show=False) p[0].only_integers = True p[0].steps = True p.save(tmp_file('%s_advanced_fin_sum' % name)) ### # Test expressions that can not be translated to np and # generate complex results. ### plot(sin(x) + I * cos(x)).save(tmp_file()) plot(sqrt(sqrt(-x))).save(tmp_file()) plot(LambertW(x)).save(tmp_file()) plot(sqrt(LambertW(x))).save(tmp_file()) # Characteristic function of a StudentT distribution with nu=10 plot((meijerg( ((1 / 2, ), ()), ((5, 0, 1 / 2), ()), 5 * x**2 * exp_polar(-I * pi) / 2) + meijerg( ((1 / 2, ), ()), ((5, 0, 1 / 2), ()), 5 * x**2 * exp_polar(I * pi) / 2)) / (48 * pi), (x, 1e-6, 1e-2)).save(tmp_file()) finally: TmpFileManager.cleanup()
def test_specfun(): for f in [besselj, bessely, besseli, besselk]: assert octave_code(f(n, x)) == f.__name__ + '(n, x)' assert octave_code(hankel1(n, x)) == 'besselh(n, 1, x)' assert octave_code(hankel2(n, x)) == 'besselh(n, 2, x)' assert octave_code(airyai(x)) == 'airy(0, x)' assert octave_code(airyaiprime(x)) == 'airy(1, x)' assert octave_code(airybi(x)) == 'airy(2, x)' assert octave_code(airybiprime(x)) == 'airy(3, x)' assert octave_code(uppergamma(n, x)) == "gammainc(x, n, 'upper')" assert octave_code(lowergamma(n, x)) == "gammainc(x, n, 'lower')" assert octave_code(jn( n, x)) == 'sqrt(2)*sqrt(pi)*sqrt(1./x).*besselj(n + 1/2, x)/2' assert octave_code(yn( n, x)) == 'sqrt(2)*sqrt(pi)*sqrt(1./x).*bessely(n + 1/2, x)/2' assert octave_code(Chi(x)) == 'coshint(x)' assert octave_code(Ci(x)) == 'cosint(x)' assert octave_code(laguerre(n, x)) == 'laguerreL(n, x)' assert octave_code(li(x)) == 'logint(x)' assert octave_code(loggamma(x)) == 'gammaln(x)' assert octave_code(polygamma(n, x)) == 'psi(n, x)' assert octave_code(Shi(x)) == 'sinhint(x)' assert octave_code(Si(x)) == 'sinint(x)' assert octave_code(LambertW(x)) == 'lambertw(x)' assert octave_code(LambertW(x, n)) == 'lambertw(n, x)' assert octave_code(zeta(x)) == 'zeta(x)' assert octave_code(zeta( x, y)) == '% Not supported in Octave:\n% zeta\nzeta(x, y)'
def test_sympyissue_5673(): e = LambertW(-1) assert e.is_comparable is False assert e.is_positive is not True e2 = 1 - 1 / (1 - exp(-1000)) assert e.is_positive is not True e3 = -2 + exp(exp(LambertW(log(2))) * LambertW(log(2))) assert e3.is_nonzero is not True
def test_pmint_WrightOmega(): def omega(x): return LambertW(exp(x)) f = (1 + omega(x) * (2 + cos(omega(x)) * (x + omega(x)))) / (1 + omega(x)) / (x + omega(x)) g = log(x + LambertW(exp(x))) + sin(LambertW(exp(x))) assert heurisch(f, x) == g
def omega(x): return LambertW(exp(x))
def test_pmint_LambertW(): f = LambertW(x) g = x * LambertW(x) - x + x / LambertW(x) assert heurisch(f, x) == g
def test_lambertw(): k = Symbol('k') assert LambertW(x, 0) == LambertW(x) assert LambertW(x, 0, evaluate=False) != LambertW(x) assert LambertW(0) == 0 assert LambertW(E) == 1 assert LambertW(-1 / E) == -1 assert LambertW(-log(2) / 2) == -log(2) assert LambertW(oo) == oo assert LambertW(0, 1) == -oo assert LambertW(0, 42) == -oo assert LambertW(-pi / 2, -1) == -I * pi / 2 assert LambertW(-1 / E, -1) == -1 assert LambertW(-2 * exp(-2), -1) == -2 assert LambertW( x**2).diff(x) == 2 * LambertW(x**2) / x / (1 + LambertW(x**2)) assert LambertW(x, k).diff(x) == LambertW(x, k) / x / (1 + LambertW(x, k)) pytest.raises(ArgumentIndexError, lambda: LambertW(x).fdiff(3)) pytest.raises(ArgumentIndexError, lambda: LambertW(x, k).fdiff(3)) assert LambertW(sqrt(2)).evalf(30).epsilon_eq( Float("0.701338383413663009202120278965", 30), 1e-29) assert re(LambertW(2, -1)).evalf().epsilon_eq(Float("-0.834310366631110")) assert LambertW(-1).is_extended_real is False # issue sympy/sympy#5215 assert LambertW(2, evaluate=False).is_extended_real p = Symbol('p', positive=True) assert LambertW(p, evaluate=False).is_extended_real assert LambertW(p - 1, evaluate=False).is_extended_real is None assert LambertW(-p - 2 / S.Exp1, evaluate=False).is_extended_real is False assert LambertW(S.Half, -1, evaluate=False).is_extended_real is False assert LambertW(-S.One / 10, -1, evaluate=False).is_extended_real assert LambertW(0, evaluate=False).is_algebraic na = Symbol('na', nonzero=True, algebraic=True) assert LambertW(na).is_algebraic is False assert LambertW(x, -1).is_extended_real is None assert LambertW(x, 2).is_extended_real is None # See sympy/sympy#7259: assert LambertW(x).series(x) == x - x**2 + 3*x**3/2 - 8*x**4/3 + \ 125*x**5/24 + O(x**6) assert LambertW(x).series(x, n=0) == O(1, x) assert LambertW(x, k).series(x, x0=1, n=1) == (LambertW(1, k) + O(x - 1, (x, 1)))
def test_transcendental_functions(): assert integrate(LambertW(2*x), x) == \ -x + x*LambertW(2*x) + x/LambertW(2*x)