def test_asinh_series(): x = Symbol('x') assert asinh(x).series(x, 0, 8) == \ x - x**3/6 + 3*x**5/40 - 5*x**7/112 + O(x**8) t5 = asinh(x).taylor_term(5, x) assert t5 == 3 * x**5 / 40 assert asinh(x).taylor_term(7, x, t5, 0) == -5 * x**7 / 112
def test_asinh_series(): x = Symbol('x') assert asinh(x).series(x, 0, 8) == \ x - x**3/6 + 3*x**5/40 - 5*x**7/112 + O(x**8) t5 = asinh(x).taylor_term(5, x) assert t5 == 3*x**5/40 assert asinh(x).taylor_term(7, x, t5, 0) == -5*x**7/112
def test_heurisch_hyperbolic(): assert heurisch(sinh(x), x) == cosh(x) assert heurisch(cosh(x), x) == sinh(x) assert heurisch(x*sinh(x), x) == x*cosh(x) - sinh(x) assert heurisch(x*cosh(x), x) == x*sinh(x) - cosh(x) assert heurisch(x*asinh(x/2), x) == x**2*asinh(x/2)/2 + asinh(x/2) - x*(4+x**2)**Rational(1,2)/4
def test_heurisch_hyperbolic(): assert heurisch(sinh(x), x) == cosh(x) assert heurisch(cosh(x), x) == sinh(x) assert heurisch(x*sinh(x), x) == x*cosh(x) - sinh(x) assert heurisch(x*cosh(x), x) == x*sinh(x) - cosh(x) assert heurisch(x*asinh(x/2), x) == x**2*asinh(x/2)/2 + asinh(x/2) - x*sqrt(4+x**2)/4
def test_acsch(): x = Symbol('x') assert unchanged(acsch, x) assert acsch(-x) == -acsch(x) # values at fixed points assert acsch(1) == log(1 + sqrt(2)) assert acsch(-1) == - log(1 + sqrt(2)) assert acsch(0) is zoo assert acsch(2) == log((1+sqrt(5))/2) assert acsch(-2) == - log((1+sqrt(5))/2) assert acsch(I) == - I*pi/2 assert acsch(-I) == I*pi/2 assert acsch(-I*(sqrt(6) + sqrt(2))) == I*pi / 12 assert acsch(I*(sqrt(2) + sqrt(6))) == -I*pi / 12 assert acsch(-I*(1 + sqrt(5))) == I*pi / 10 assert acsch(I*(1 + sqrt(5))) == -I*pi / 10 assert acsch(-I*2 / sqrt(2 - sqrt(2))) == I*pi / 8 assert acsch(I*2 / sqrt(2 - sqrt(2))) == -I*pi / 8 assert acsch(-I*2) == I*pi / 6 assert acsch(I*2) == -I*pi / 6 assert acsch(-I*sqrt(2 + 2/sqrt(5))) == I*pi / 5 assert acsch(I*sqrt(2 + 2/sqrt(5))) == -I*pi / 5 assert acsch(-I*sqrt(2)) == I*pi / 4 assert acsch(I*sqrt(2)) == -I*pi / 4 assert acsch(-I*(sqrt(5)-1)) == 3*I*pi / 10 assert acsch(I*(sqrt(5)-1)) == -3*I*pi / 10 assert acsch(-I*2 / sqrt(3)) == I*pi / 3 assert acsch(I*2 / sqrt(3)) == -I*pi / 3 assert acsch(-I*2 / sqrt(2 + sqrt(2))) == 3*I*pi / 8 assert acsch(I*2 / sqrt(2 + sqrt(2))) == -3*I*pi / 8 assert acsch(-I*sqrt(2 - 2/sqrt(5))) == 2*I*pi / 5 assert acsch(I*sqrt(2 - 2/sqrt(5))) == -2*I*pi / 5 assert acsch(-I*(sqrt(6) - sqrt(2))) == 5*I*pi / 12 assert acsch(I*(sqrt(6) - sqrt(2))) == -5*I*pi / 12 assert acsch(nan) is nan # properties # acsch(x) == asinh(1/x) assert acsch(-I*sqrt(2)) == asinh(I/sqrt(2)) assert acsch(-I*2 / sqrt(3)) == asinh(I*sqrt(3) / 2) # acsch(x) == -I*asin(I/x) assert acsch(-I*sqrt(2)) == -I*asin(-1/sqrt(2)) assert acsch(-I*2 / sqrt(3)) == -I*asin(-sqrt(3)/2) # csch(acsch(x)) / x == 1 assert expand_mul(csch(acsch(-I*(sqrt(6) + sqrt(2)))) / (-I*(sqrt(6) + sqrt(2)))) == 1 assert expand_mul(csch(acsch(I*(1 + sqrt(5)))) / ((I*(1 + sqrt(5))))) == 1 assert (csch(acsch(I*sqrt(2 - 2/sqrt(5)))) / (I*sqrt(2 - 2/sqrt(5)))).simplify() == 1 assert (csch(acsch(-I*sqrt(2 - 2/sqrt(5)))) / (-I*sqrt(2 - 2/sqrt(5)))).simplify() == 1 # numerical evaluation assert str(acsch(5*I+1).n(6)) == '0.0391819 - 0.193363*I' assert str(acsch(-5*I+1).n(6)) == '0.0391819 + 0.193363*I'
def test_acsch(): x = Symbol('x') assert acsch(-x) == acsch(-x) assert acsch(x) == -acsch(-x) # values at fixed points assert acsch(1) == log(1 + sqrt(2)) assert acsch(-1) == - log(1 + sqrt(2)) assert acsch(0) == zoo assert acsch(2) == log((1+sqrt(5))/2) assert acsch(-2) == - log((1+sqrt(5))/2) assert acsch(I) == - I*pi/2 assert acsch(-I) == I*pi/2 assert acsch(-I*(sqrt(6) + sqrt(2))) == I*pi / 12 assert acsch(I*(sqrt(2) + sqrt(6))) == -I*pi / 12 assert acsch(-I*(1 + sqrt(5))) == I*pi / 10 assert acsch(I*(1 + sqrt(5))) == -I*pi / 10 assert acsch(-I*2 / sqrt(2 - sqrt(2))) == I*pi / 8 assert acsch(I*2 / sqrt(2 - sqrt(2))) == -I*pi / 8 assert acsch(-I*2) == I*pi / 6 assert acsch(I*2) == -I*pi / 6 assert acsch(-I*sqrt(2 + 2/sqrt(5))) == I*pi / 5 assert acsch(I*sqrt(2 + 2/sqrt(5))) == -I*pi / 5 assert acsch(-I*sqrt(2)) == I*pi / 4 assert acsch(I*sqrt(2)) == -I*pi / 4 assert acsch(-I*(sqrt(5)-1)) == 3*I*pi / 10 assert acsch(I*(sqrt(5)-1)) == -3*I*pi / 10 assert acsch(-I*2 / sqrt(3)) == I*pi / 3 assert acsch(I*2 / sqrt(3)) == -I*pi / 3 assert acsch(-I*2 / sqrt(2 + sqrt(2))) == 3*I*pi / 8 assert acsch(I*2 / sqrt(2 + sqrt(2))) == -3*I*pi / 8 assert acsch(-I*sqrt(2 - 2/sqrt(5))) == 2*I*pi / 5 assert acsch(I*sqrt(2 - 2/sqrt(5))) == -2*I*pi / 5 assert acsch(-I*(sqrt(6) - sqrt(2))) == 5*I*pi / 12 assert acsch(I*(sqrt(6) - sqrt(2))) == -5*I*pi / 12 # properties # acsch(x) == asinh(1/x) assert acsch(-I*sqrt(2)) == asinh(I/sqrt(2)) assert acsch(-I*2 / sqrt(3)) == asinh(I*sqrt(3) / 2) # acsch(x) == -I*asin(I/x) assert acsch(-I*sqrt(2)) == -I*asin(-1/sqrt(2)) assert acsch(-I*2 / sqrt(3)) == -I*asin(-sqrt(3)/2) # csch(acsch(x)) / x == 1 assert expand_mul(csch(acsch(-I*(sqrt(6) + sqrt(2)))) / (-I*(sqrt(6) + sqrt(2)))) == 1 assert expand_mul(csch(acsch(I*(1 + sqrt(5)))) / ((I*(1 + sqrt(5))))) == 1 assert (csch(acsch(I*sqrt(2 - 2/sqrt(5)))) / (I*sqrt(2 - 2/sqrt(5)))).simplify() == 1 assert (csch(acsch(-I*sqrt(2 - 2/sqrt(5)))) / (-I*sqrt(2 - 2/sqrt(5)))).simplify() == 1 # numerical evaluation assert str(acsch(5*I+1).n(6)) == '0.0391819 - 0.193363*I' assert str(acsch(-5*I+1).n(6)) == '0.0391819 + 0.193363*I'
def balanceFun(z): c = float(z[0]) return [ -c * sympy.cosh(0.5 * l / c - sympy.asinh(0.5 * h / (c * sympy.sinh(0.5 * l / c))) - 0.5 * l / c) + c * sympy.cosh(-sympy.asinh(0.5 * h / (c * sympy.sinh(0.5 * l / c))) - 0.5 * l / c) - (h / 2 + n) ]
def test_length(): t = Symbol("t", real=True) c1 = Curve((t, 0), (t, 0, 1)) assert c1.length == 1 c2 = Curve((t, t), (t, 0, 1)) assert c2.length == sqrt(2) c3 = Curve((t ** 2, t), (t, 2, 5)) assert c3.length == -sqrt(17) - asinh(4) / 4 + asinh(10) / 4 + 5 * sqrt(101) / 2
def test_heurisch_hyperbolic(): assert heurisch(sinh(x), x) == cosh(x) assert heurisch(cosh(x), x) == sinh(x) assert heurisch(x * sinh(x), x) == x * cosh(x) - sinh(x) assert heurisch(x * cosh(x), x) == x * sinh(x) - cosh(x) assert ( heurisch(x * asinh(x / 2), x) == x ** 2 * asinh(x / 2) / 2 + asinh(x / 2) - x * sqrt(4 + x ** 2) / 4 )
def test_length(): t = Symbol('t', real=True) c1 = Curve((t, 0), (t, 0, 1)) assert c1.length == 1 c2 = Curve((t, t), (t, 0, 1)) assert c2.length == sqrt(2) c3 = Curve((t ** 2, t), (t, 2, 5)) assert c3.length == -sqrt(17) - asinh(4) / 4 + asinh(10) / 4 + 5 * sqrt(101) / 2
def test_manualintegrate_inversetrig(): # atan assert manualintegrate(exp(x) / (1 + exp(2 * x)), x) == atan(exp(x)) assert manualintegrate(1 / (4 + 9 * x**2), x) == atan(3 * x / 2) / 6 assert manualintegrate(1 / (16 + 16 * x**2), x) == atan(x) / 16 assert manualintegrate(1 / (4 + x**2), x) == atan(x / 2) / 2 assert manualintegrate(1 / (1 + 4 * x**2), x) == atan(2 * x) / 2 assert manualintegrate(1/(a + b*x**2), x) == \ Piecewise(((sqrt(a/b)*atan(x*sqrt(b/a))/a), And(a > 0, b > 0))) assert manualintegrate(1/(4 + b*x**2), x) == \ Piecewise((sqrt(1/b)*atan(sqrt(b)*x/2)/2, b > 0)) assert manualintegrate(1/(a + 4*x**2), x) == \ Piecewise((atan(2*x*sqrt(1/a))/(2*sqrt(a)), a > 0)) assert manualintegrate(1 / (4 + 4 * x**2), x) == atan(x) / 4 # asin assert manualintegrate(1 / sqrt(1 - x**2), x) == asin(x) assert manualintegrate(1 / sqrt(4 - 4 * x**2), x) == asin(x) / 2 assert manualintegrate(3 / sqrt(1 - 9 * x**2), x) == asin(3 * x) assert manualintegrate(1 / sqrt(4 - 9 * x**2), x) == asin(3 * x / 2) / 3 # asinh assert manualintegrate(1/sqrt(x**2 + 1), x) == \ asinh(x) assert manualintegrate(1/sqrt(x**2 + 4), x) == \ asinh(x/2) assert manualintegrate(1/sqrt(4*x**2 + 4), x) == \ asinh(x)/2 assert manualintegrate(1/sqrt(4*x**2 + 1), x) == \ asinh(2*x)/2 assert manualintegrate(1/sqrt(a*x**2 + 1), x) == \ Piecewise((sqrt(-1/a)*asin(x*sqrt(-a)), a < 0), (sqrt(1/a)*asinh(sqrt(a)*x), a > 0)) assert manualintegrate(1/sqrt(a + x**2), x) == \ Piecewise((asinh(x*sqrt(1/a)), a > 0), (acosh(x*sqrt(-1/a)), a < 0)) # acosh assert manualintegrate(1/sqrt(x**2 - 1), x) == \ acosh(x) assert manualintegrate(1/sqrt(x**2 - 4), x) == \ acosh(x/2) assert manualintegrate(1/sqrt(4*x**2 - 4), x) == \ acosh(x)/2 assert manualintegrate(1/sqrt(9*x**2 - 1), x) == \ acosh(3*x)/3 assert manualintegrate(1/sqrt(a*x**2 - 4), x) == \ Piecewise((sqrt(1/a)*acosh(sqrt(a)*x/2), a > 0)) assert manualintegrate(1/sqrt(-a + 4*x**2), x) == \ Piecewise((asinh(2*x*sqrt(-1/a))/2, -a > 0), (acosh(2*x*sqrt(1/a))/2, -a < 0)) # piecewise assert manualintegrate(1/sqrt(a-b*x**2), x) == \ Piecewise((sqrt(a/b)*asin(x*sqrt(b/a))/sqrt(a), And(-b < 0, a > 0)), (sqrt(-a/b)*asinh(x*sqrt(-b/a))/sqrt(a), And(-b > 0, a > 0)), (sqrt(a/b)*acosh(x*sqrt(b/a))/sqrt(-a), And(-b > 0, a < 0))) assert manualintegrate(1/sqrt(a + b*x**2), x) == \ Piecewise((sqrt(-a/b)*asin(x*sqrt(-b/a))/sqrt(a), And(a > 0, b < 0)), (sqrt(a/b)*asinh(x*sqrt(b/a))/sqrt(a), And(a > 0, b > 0)), (sqrt(-a/b)*acosh(x*sqrt(-b/a))/sqrt(-a), And(a < 0, b > 0)))
def test_manualintegrate_inversetrig(): # atan assert manualintegrate(exp(x) / (1 + exp(2*x)), x) == atan(exp(x)) assert manualintegrate(1 / (4 + 9 * x**2), x) == atan(3 * x/2) / 6 assert manualintegrate(1 / (16 + 16 * x**2), x) == atan(x) / 16 assert manualintegrate(1 / (4 + x**2), x) == atan(x / 2) / 2 assert manualintegrate(1 / (1 + 4 * x**2), x) == atan(2*x) / 2 assert manualintegrate(1/(a + b*x**2), x) == \ Piecewise(((sqrt(a/b)*atan(x*sqrt(b/a))/a), And(a > 0, b > 0))) assert manualintegrate(1/(4 + b*x**2), x) == \ Piecewise((sqrt(1/b)*atan(sqrt(b)*x/2)/2, b > 0)) assert manualintegrate(1/(a + 4*x**2), x) == \ Piecewise((atan(2*x*sqrt(1/a))/(2*sqrt(a)), a > 0)) assert manualintegrate(1/(4 + 4*x**2), x) == atan(x) / 4 # asin assert manualintegrate(1/sqrt(1-x**2), x) == asin(x) assert manualintegrate(1/sqrt(4-4*x**2), x) == asin(x)/2 assert manualintegrate(3/sqrt(1-9*x**2), x) == asin(3*x) assert manualintegrate(1/sqrt(4-9*x**2), x) == asin(3*x/2)/3 # asinh assert manualintegrate(1/sqrt(x**2 + 1), x) == \ asinh(x) assert manualintegrate(1/sqrt(x**2 + 4), x) == \ asinh(x/2) assert manualintegrate(1/sqrt(4*x**2 + 4), x) == \ asinh(x)/2 assert manualintegrate(1/sqrt(4*x**2 + 1), x) == \ asinh(2*x)/2 assert manualintegrate(1/sqrt(a*x**2 + 1), x) == \ Piecewise((sqrt(-1/a)*asin(x*sqrt(-a)), a < 0), (sqrt(1/a)*asinh(sqrt(a)*x), a > 0)) assert manualintegrate(1/sqrt(a + x**2), x) == \ Piecewise((asinh(x*sqrt(1/a)), a > 0), (acosh(x*sqrt(-1/a)), a < 0)) # acosh assert manualintegrate(1/sqrt(x**2 - 1), x) == \ acosh(x) assert manualintegrate(1/sqrt(x**2 - 4), x) == \ acosh(x/2) assert manualintegrate(1/sqrt(4*x**2 - 4), x) == \ acosh(x)/2 assert manualintegrate(1/sqrt(9*x**2 - 1), x) == \ acosh(3*x)/3 assert manualintegrate(1/sqrt(a*x**2 - 4), x) == \ Piecewise((sqrt(1/a)*acosh(sqrt(a)*x/2), a > 0)) assert manualintegrate(1/sqrt(-a + 4*x**2), x) == \ Piecewise((asinh(2*x*sqrt(-1/a))/2, -a > 0), (acosh(2*x*sqrt(1/a))/2, -a < 0)) # piecewise assert manualintegrate(1/sqrt(a-b*x**2), x) == \ Piecewise((sqrt(a/b)*asin(x*sqrt(b/a))/sqrt(a), And(-b < 0, a > 0)), (sqrt(-a/b)*asinh(x*sqrt(-b/a))/sqrt(a), And(-b > 0, a > 0)), (sqrt(a/b)*acosh(x*sqrt(b/a))/sqrt(-a), And(-b > 0, a < 0))) assert manualintegrate(1/sqrt(a + b*x**2), x) == \ Piecewise((sqrt(-a/b)*asin(x*sqrt(-b/a))/sqrt(a), And(a > 0, b < 0)), (sqrt(a/b)*asinh(x*sqrt(b/a))/sqrt(a), And(a > 0, b > 0)), (sqrt(-a/b)*acosh(x*sqrt(-b/a))/sqrt(-a), And(a < 0, b > 0)))
def test_simplifications(): x = Symbol("x") assert sinh(asinh(x)) == x assert sinh(acosh(x)) == sqrt(x - 1) * sqrt(x + 1) assert sinh(atanh(x)) == x / sqrt(1 - x ** 2) assert cosh(asinh(x)) == sqrt(1 + x ** 2) assert cosh(acosh(x)) == x assert cosh(atanh(x)) == 1 / sqrt(1 - x ** 2) assert tanh(asinh(x)) == x / sqrt(1 + x ** 2) assert tanh(acosh(x)) == sqrt(x - 1) * sqrt(x + 1) / x assert tanh(atanh(x)) == x
def test_heurisch_hacking(): assert heurisch(sqrt(1 + 7*x**2), x, hints=[]) == \ x*sqrt(1+7*x**2)/2 + sqrt(7)*asinh(sqrt(7)*x)/14 assert heurisch(sqrt(1 - 7*x**2), x, hints=[]) == \ x*sqrt(1-7*x**2)/2 + sqrt(7)*asin(sqrt(7)*x)/14 assert heurisch(1/sqrt(1 + 7*x**2), x, hints=[]) == \ sqrt(7)*asinh(sqrt(7)*x)/7 assert heurisch(1/sqrt(1 - 7*x**2), x, hints=[]) == \ sqrt(7)*asin(sqrt(7)*x)/7 assert heurisch(exp(-7*x**2),x,hints=[]) == \ sqrt(7*pi)*erf(sqrt(7)*x)/14
def test_simplifications(): x = Symbol('x') assert sinh(asinh(x)) == x assert sinh(acosh(x)) == sqrt(x - 1) * sqrt(x + 1) assert sinh(atanh(x)) == x / sqrt(1 - x**2) assert cosh(asinh(x)) == sqrt(1 + x**2) assert cosh(acosh(x)) == x assert cosh(atanh(x)) == 1 / sqrt(1 - x**2) assert tanh(asinh(x)) == x / sqrt(1 + x**2) assert tanh(acosh(x)) == sqrt(x - 1) * sqrt(x + 1) / x assert tanh(atanh(x)) == x
def test_trig_functions(self, printer, x): # Trig functions assert printer.doprint(sp.acos(x)) == 'acos(x)' assert printer.doprint(sp.acosh(x)) == 'acosh(x)' assert printer.doprint(sp.asin(x)) == 'asin(x)' assert printer.doprint(sp.asinh(x)) == 'asinh(x)' assert printer.doprint(sp.atan(x)) == 'atan(x)' assert printer.doprint(sp.atanh(x)) == 'atanh(x)' assert printer.doprint(sp.ceiling(x)) == 'ceil(x)' assert printer.doprint(sp.cos(x)) == 'cos(x)' assert printer.doprint(sp.cosh(x)) == 'cosh(x)' assert printer.doprint(sp.exp(x)) == 'exp(x)' assert printer.doprint(sp.factorial(x)) == 'factorial(x)' assert printer.doprint(sp.floor(x)) == 'floor(x)' assert printer.doprint(sp.log(x)) == 'log(x)' assert printer.doprint(sp.sin(x)) == 'sin(x)' assert printer.doprint(sp.sinh(x)) == 'sinh(x)' assert printer.doprint(sp.tan(x)) == 'tan(x)' assert printer.doprint(sp.tanh(x)) == 'tanh(x)' # extra trig functions assert printer.doprint(sp.sec(x)) == '1 / cos(x)' assert printer.doprint(sp.csc(x)) == '1 / sin(x)' assert printer.doprint(sp.cot(x)) == '1 / tan(x)' assert printer.doprint(sp.asec(x)) == 'acos(1 / x)' assert printer.doprint(sp.acsc(x)) == 'asin(1 / x)' assert printer.doprint(sp.acot(x)) == 'atan(1 / x)' assert printer.doprint(sp.sech(x)) == '1 / cosh(x)' assert printer.doprint(sp.csch(x)) == '1 / sinh(x)' assert printer.doprint(sp.coth(x)) == '1 / tanh(x)' assert printer.doprint(sp.asech(x)) == 'acosh(1 / x)' assert printer.doprint(sp.acsch(x)) == 'asinh(1 / x)' assert printer.doprint(sp.acoth(x)) == 'atanh(1 / x)'
def eta_fil(self, x, V_app, apprx=(0, 0, 0, 0)): m_eff = self.m_r * const.electron_mass mpmath.mp.dps = 20 x0 = Symbol('x0') # eta_fil x1 = Symbol('x1') # eta_ac x2 = Symbol('x2') # eta_hop x3 = Symbol('x3') # V_tunnel f0 = const.Boltzmann * self.T / (1 - self.alpha) / const.elementary_charge / self.z * \ ln(self.A_fil/self.A_ac*(exp(- self.alpha * const.elementary_charge * self.z / const.Boltzmann / self.T * x0) - 1) + 1) - x1# eta_ac = f(eta_fil) x1 = f(x0) f1 = x*2*const.Boltzmann*self.T/self.a/self.z/const.elementary_charge*\ asinh(self.j_0et/self.j_0hop*(exp(- self.alpha * const.elementary_charge * self.z / const.Boltzmann / self.T * x0) - 1)) - x2# eta_hop = f(eta_fil) f2 = x1 - x0 + x2 - x3 f3 = -V_app + ((self.C * 3 * sqrt(2 * m_eff * ((4+x3/2)*const.elementary_charge)) / 2 / x * (const.elementary_charge / const.Planck)**2 * \ exp(- 4 * const.pi * x / const.Planck * sqrt(2 * m_eff * ((4+x3/2)*const.elementary_charge))) * self.A_fil*x3) + (self.j_0et*self.A_fil*(exp(-self.alpha*const.elementary_charge*self.z*x0/const.Boltzmann/self.T) - 1))) * (self.R_el + self.R_S + self.rho_fil*(self.L - x) / self.A_fil) \ + x3 eta_fil, eta_ac, eta_hop, V_tunnel = nsolve((f0, f1, f2, f3), [x0, x1, x2, x3], apprx) eta_fil = np.real(np.complex128(eta_fil)) eta_ac = np.real(np.complex128(eta_ac)) eta_hop = np.real(np.complex128(eta_hop)) V_tunnel = np.real(np.complex128(V_tunnel)) current = ((self.C * 3 * sqrt(2 * m_eff * ((4+V_tunnel)*const.elementary_charge)) / 2 / x * (const.elementary_charge / const.Planck)**2 * \ exp(- 4 * const.pi * x / const.Planck * sqrt(2 * m_eff * ((4+V_tunnel)*const.elementary_charge))) * self.A_fil*V_tunnel) + (self.j_0et*self.A_fil*(exp(-self.alpha*const.elementary_charge*self.z*eta_fil/const.Boltzmann/self.T) - 1))) print(eta_fil, eta_ac, eta_hop, V_tunnel) # print(eta_ac - eta_fil + eta_hop - V_tunnel) return eta_fil, eta_ac, eta_hop, V_tunnel, current
def test_math_functions(): dort('sin(37)', sympy.sin(37)) dort('cos(38)', sympy.cos(38)) dort('tan(38)', sympy.tan(38)) dort('sec(39)', sympy.sec(39)) dort('csc(40)', sympy.csc(40)) dort('cot(41)', sympy.cot(41)) dort('asin(42)', sympy.asin(42)) dort('acos(43)', sympy.acos(43)) dort('atan(44)', sympy.atan(44)) dort('asec(45)', sympy.asec(45)) dort('acsc(46)', sympy.acsc(46)) dort('acot(47)', sympy.acot(47)) dort('sind(37)', sympy.sin(37 * sympy.pi / sympy.Number(180))) dort('cosd(38)', sympy.cos(38 * sympy.pi / sympy.Number(180))) dort('tand(38)', sympy.tan(38 * sympy.pi / sympy.Number(180))) dort('secd(39)', sympy.sec(39 * sympy.pi / sympy.Number(180))) dort('cscd(40)', sympy.csc(40 * sympy.pi / sympy.Number(180))) dort('cotd(41)', sympy.cot(41 * sympy.pi / sympy.Number(180))) dort('asind(42)', sympy.asin(42) * sympy.Number(180) / sympy.pi) dort('acosd(43)', sympy.acos(43) * sympy.Number(180) / sympy.pi) dort('atand(44)', sympy.atan(44) * sympy.Number(180) / sympy.pi) dort('asecd(45)', sympy.asec(45) * sympy.Number(180) / sympy.pi) dort('acscd(46)', sympy.acsc(46) * sympy.Number(180) / sympy.pi) dort('acotd(47)', sympy.acot(47) * sympy.Number(180) / sympy.pi) dort('sinh(4)', sympy.sinh(4)) dort('cosh(5)', sympy.cosh(5)) dort('tanh(6)', sympy.tanh(6)) dort('asinh(4)', sympy.asinh(4)) dort('acosh(5)', sympy.acosh(5)) dort('atanh(6)', sympy.atanh(6)) dort('int(E)', int(sympy.E)) dort('int(-E)', int(-sympy.E))
def test_asin(): x = Symbol('x') assert asin(nan) == nan assert asin(oo) == -I*oo assert asin(-oo) == I*oo # Note: asin(-x) = - asin(x) assert asin(0) == 0 assert asin(1) == pi/2 assert asin(-1) == -pi/2 assert asin(sqrt(3)/2) == pi/3 assert asin(-sqrt(3)/2) == -pi/3 assert asin(sqrt(2)/2) == pi/4 assert asin(-sqrt(2)/2) == -pi/4 assert asin(sqrt((5-sqrt(5))/8)) == pi/5 assert asin(-sqrt((5-sqrt(5))/8)) == -pi/5 assert asin(Rational(1,2)) == pi/6 assert asin(-Rational(1,2)) == -pi/6 assert asin((sqrt(2-sqrt(2)))/2) == pi/8 assert asin(-(sqrt(2-sqrt(2)))/2) == -pi/8 assert asin((sqrt(5)-1)/4) == pi/10 assert asin(-(sqrt(5)-1)/4) == -pi/10 assert asin((sqrt(3)-1)/sqrt(2**3)) == pi/12 assert asin(-(sqrt(3)-1)/sqrt(2**3)) == -pi/12 assert asin(x).diff(x) == 1/sqrt(1-x**2) assert asin(0.2).is_real == True assert asin(-2).is_real == False assert asin(-2*I) == -I*asinh(2)
def asinh(self, value): """ Verilen değeri kullanarak, sumpy.asinh döndürür :param value: değer :return: sympy.asinh """ return sp.asinh(value_checker(value))
def test_asin(): x = Symbol('x') assert asin(nan) == nan assert asin(oo) == -I * oo assert asin(-oo) == I * oo # Note: asin(-x) = - asin(x) assert asin(0) == 0 assert asin(1) == pi / 2 assert asin(-1) == -pi / 2 assert asin(sqrt(3) / 2) == pi / 3 assert asin(-sqrt(3) / 2) == -pi / 3 assert asin(sqrt(2) / 2) == pi / 4 assert asin(-sqrt(2) / 2) == -pi / 4 assert asin(sqrt((5 - sqrt(5)) / 8)) == pi / 5 assert asin(-sqrt((5 - sqrt(5)) / 8)) == -pi / 5 assert asin(Rational(1, 2)) == pi / 6 assert asin(-Rational(1, 2)) == -pi / 6 assert asin((sqrt(2 - sqrt(2))) / 2) == pi / 8 assert asin(-(sqrt(2 - sqrt(2))) / 2) == -pi / 8 assert asin((sqrt(5) - 1) / 4) == pi / 10 assert asin(-(sqrt(5) - 1) / 4) == -pi / 10 assert asin((sqrt(3) - 1) / sqrt(2**3)) == pi / 12 assert asin(-(sqrt(3) - 1) / sqrt(2**3)) == -pi / 12 assert asin(x).diff(x) == 1 / sqrt(1 - x**2) assert asin(0.2).is_real == True assert asin(-2).is_real == False assert asin(-2 * I) == -I * asinh(2)
def test_explicit_latex(self): test_cases = [ ('0x', Mul(0, x, evaluate=False)), ('0 = 0', Eq(0, 0)), ('0 = 1', Eq(0, 1)), ('10x = 10x', Eq(10 * x, 10 * x)), (r'\sin ^ { - 1 } ( x )', asin(x)), (r'\cos^{-1}x', acos(x)), (r'\tan^ {-1 }x', atan(x)), (r'\cot^ {-1 }x', acot(x)), (r'\sinh^{-1}(x)', asinh(x)), (r'\sqrt{-1}', I), (r'\exp{x}', exp(x)), (r'\exp(x)', exp(x)), ('e^{x}', E**x), ] failed_tests = [] for s_l_expr, expr in test_cases: l_expr = process_sympy(s_l_expr) equiv = equivalent(expr, l_expr) if not equiv: print '%s %s' % (s_l_expr, 'PASSED' if equiv else 'FAILED') failed_tests.append((s_l_expr, l_expr)) print 'sympy: %s\nlatex: %s\n' % (expr, l_expr) if failed_tests: print len(failed_tests), 'failed test cases' assert len(failed_tests) == 0
def test_issue_1304(): z = Symbol('z', positive=True) assert integrate( sqrt(x**2 + z**2), x) == z**2 * asinh(x / z) / 2 + x * (x**2 + z**2)**(S(1) / 2) / 2 assert integrate( sqrt(x**2 - z**2), x) == -z**2 * acosh(x / z) / 2 + x * (x**2 - z**2)**(S(1) / 2) / 2
def test_issue_1304(): z = Symbol("z", positive=True) assert integrate(sqrt(x ** 2 + z ** 2), x) == z ** 2 * asinh(x / z) / 2 + x * (x ** 2 + z ** 2) ** (S(1) / 2) / 2 assert integrate(sqrt(x ** 2 - z ** 2), x) == -z ** 2 * acosh(x / z) / 2 + x * (x ** 2 - z ** 2) ** (S(1) / 2) / 2 assert ( integrate(sqrt(-x ** 2 - 4), x) == -2 * atan(x / (-4 - x ** 2) ** (S(1) / 2)) + x * (-4 - x ** 2) ** (S(1) / 2) / 2 )
def test_heurisch_hacking(): assert heurisch(sqrt(1 + 7*x**2), x, hints=[]) == \ x*sqrt(1 + 7*x**2)/2 + sqrt(7)*asinh(sqrt(7)*x)/14 assert heurisch(sqrt(1 - 7*x**2), x, hints=[]) == \ x*sqrt(1 - 7*x**2)/2 + sqrt(7)*asin(sqrt(7)*x)/14 assert heurisch(1/sqrt(1 + 7*x**2), x, hints=[]) == \ sqrt(7)*asinh(sqrt(7)*x)/7 assert heurisch(1/sqrt(1 - 7*x**2), x, hints=[]) == \ sqrt(7)*asin(sqrt(7)*x)/7 assert heurisch(exp(-7*x**2), x, hints=[]) == \ sqrt(7*pi)*erf(sqrt(7)*x)/14 assert heurisch(1/sqrt(9 - 4*x**2), x, hints=[]) == \ asin(x*Rational(2, 3))/2 assert heurisch(1/sqrt(9 + 4*x**2), x, hints=[]) == \ asinh(x*Rational(2, 3))/2
def test_inverses(): x = Symbol('x') assert sinh(x).inverse() == asinh raises(AttributeError, lambda: cosh(x).inverse()) assert tanh(x).inverse() == atanh assert coth(x).inverse() == acoth assert asinh(x).inverse() == sinh assert acosh(x).inverse() == cosh assert atanh(x).inverse() == tanh assert acoth(x).inverse() == coth
def test_derivs(): x = Symbol('x') assert coth(x).diff(x) == -sinh(x)**(-2) assert sinh(x).diff(x) == cosh(x) assert cosh(x).diff(x) == sinh(x) assert tanh(x).diff(x) == -tanh(x)**2 + 1 assert acoth(x).diff(x) == 1 / (-x**2 + 1) assert asinh(x).diff(x) == 1 / sqrt(x**2 + 1) assert acosh(x).diff(x) == 1 / sqrt(x**2 - 1) assert atanh(x).diff(x) == 1 / (-x**2 + 1)
def test_derivs(): x = Symbol('x') assert coth(x).diff(x) == -sinh(x)**(-2) assert sinh(x).diff(x) == cosh(x) assert cosh(x).diff(x) == sinh(x) assert tanh(x).diff(x) == -tanh(x)**2 + 1 assert acoth(x).diff(x) == 1/(-x**2 + 1) assert asinh(x).diff(x) == 1/sqrt(x**2 + 1) assert acosh(x).diff(x) == 1/sqrt(x**2 - 1) assert atanh(x).diff(x) == 1/(-x**2 + 1)
def test_hyperbolic(): x = Symbol("x") assert sinh(x).nseries(x, 0, 6) == x + x**3/6 + x**5/120 + O(x**6) assert cosh(x).nseries(x, 0, 5) == 1 + x**2/2 + x**4/24 + O(x**5) assert tanh(x).nseries(x, 0, 6) == x - x**3/3 + 2*x**5/15 + O(x**6) assert coth(x).nseries(x, 0, 6) == 1/x - x**3/45 + x/3 + 2*x**5/945 + O(x**6) assert asinh(x).nseries(x, 0, 6) == x - x**3/6 + 3*x**5/40 + O(x**6) assert acosh(x).nseries(x, 0, 6) == pi*I/2 - I*x - 3*I*x**5/40 - I*x**3/6 + O(x**6) assert atanh(x).nseries(x, 0, 6) == x + x**3/3 + x**5/5 + O(x**6) assert acoth(x).nseries(x, 0, 6) == x + x**3/3 + x**5/5 + pi*I/2 + O(x**6)
def test_heurisch_hacking(): assert heurisch(sqrt(1 + 7*x**2), x, hints=[]) == \ x*sqrt(1+7*x**2)/2 + sqrt(7)*asinh(sqrt(7)*x)/14 assert heurisch(sqrt(1 - 7*x**2), x, hints=[]) == \ x*sqrt(1-7*x**2)/2 + sqrt(7)*asin(sqrt(7)*x)/14 assert heurisch(1/sqrt(1 + 7*x**2), x, hints=[]) == \ sqrt(7)*asinh(sqrt(7)*x)/7 assert heurisch(1/sqrt(1 - 7*x**2), x, hints=[]) == \ sqrt(7)*asin(sqrt(7)*x)/7 assert heurisch(exp(-7*x**2),x,hints=[]) == \ sqrt(7*pi)*erf(sqrt(7)*x)/14 assert heurisch(1/sqrt(9 - 4*x**2), x, hints=[]) == \ asin(2*x/3)/2 assert heurisch(1/sqrt(9 + 4*x**2), x, hints=[]) == \ asinh(2*x/3)/2
def test_conv12b(): x = sympy.Symbol("x") y = sympy.Symbol("y") assert sympify(sympy.sinh(x / 3)) == sinh(Symbol("x") / 3) assert sympify(sympy.cosh(x / 3)) == cosh(Symbol("x") / 3) assert sympify(sympy.tanh(x / 3)) == tanh(Symbol("x") / 3) assert sympify(sympy.coth(x / 3)) == coth(Symbol("x") / 3) assert sympify(sympy.asinh(x / 3)) == asinh(Symbol("x") / 3) assert sympify(sympy.acosh(x / 3)) == acosh(Symbol("x") / 3) assert sympify(sympy.atanh(x / 3)) == atanh(Symbol("x") / 3) assert sympify(sympy.acoth(x / 3)) == acoth(Symbol("x") / 3)
def test_conv12b(): x = sympy.Symbol("x") y = sympy.Symbol("y") assert sympify(sympy.sinh(x/3)) == sinh(Symbol("x") / 3) assert sympify(sympy.cosh(x/3)) == cosh(Symbol("x") / 3) assert sympify(sympy.tanh(x/3)) == tanh(Symbol("x") / 3) assert sympify(sympy.coth(x/3)) == coth(Symbol("x") / 3) assert sympify(sympy.asinh(x/3)) == asinh(Symbol("x") / 3) assert sympify(sympy.acosh(x/3)) == acosh(Symbol("x") / 3) assert sympify(sympy.atanh(x/3)) == atanh(Symbol("x") / 3) assert sympify(sympy.acoth(x/3)) == acoth(Symbol("x") / 3)
def test_simplifications(): x = Symbol('x') assert sinh(asinh(x)) == x assert sinh(acosh(x)) == sqrt(x - 1) * sqrt(x + 1) assert sinh(atanh(x)) == x/sqrt(1 - x**2) assert sinh(acoth(x)) == 1/(sqrt(x - 1) * sqrt(x + 1)) assert cosh(asinh(x)) == sqrt(1 + x**2) assert cosh(acosh(x)) == x assert cosh(atanh(x)) == 1/sqrt(1 - x**2) assert cosh(acoth(x)) == x/(sqrt(x - 1) * sqrt(x + 1)) assert tanh(asinh(x)) == x/sqrt(1 + x**2) assert tanh(acosh(x)) == sqrt(x - 1) * sqrt(x + 1) / x assert tanh(atanh(x)) == x assert tanh(acoth(x)) == 1/x assert coth(asinh(x)) == sqrt(1 + x**2)/x assert coth(acosh(x)) == x/(sqrt(x - 1) * sqrt(x + 1)) assert coth(atanh(x)) == 1/x assert coth(acoth(x)) == x assert csch(asinh(x)) == 1/x assert csch(acosh(x)) == 1/(sqrt(x - 1) * sqrt(x + 1)) assert csch(atanh(x)) == sqrt(1 - x**2)/x assert csch(acoth(x)) == sqrt(x - 1) * sqrt(x + 1) assert sech(asinh(x)) == 1/sqrt(1 + x**2) assert sech(acosh(x)) == 1/x assert sech(atanh(x)) == sqrt(1 - x**2) assert sech(acoth(x)) == sqrt(x - 1) * sqrt(x + 1)/x
def test_simplifications(): x = Symbol("x") assert sinh(asinh(x)) == x assert sinh(acosh(x)) == sqrt(x - 1) * sqrt(x + 1) assert sinh(atanh(x)) == x / sqrt(1 - x ** 2) assert sinh(acoth(x)) == 1 / (sqrt(x - 1) * sqrt(x + 1)) assert cosh(asinh(x)) == sqrt(1 + x ** 2) assert cosh(acosh(x)) == x assert cosh(atanh(x)) == 1 / sqrt(1 - x ** 2) assert cosh(acoth(x)) == x / (sqrt(x - 1) * sqrt(x + 1)) assert tanh(asinh(x)) == x / sqrt(1 + x ** 2) assert tanh(acosh(x)) == sqrt(x - 1) * sqrt(x + 1) / x assert tanh(atanh(x)) == x assert tanh(acoth(x)) == 1 / x assert coth(asinh(x)) == sqrt(1 + x ** 2) / x assert coth(acosh(x)) == x / (sqrt(x - 1) * sqrt(x + 1)) assert coth(atanh(x)) == 1 / x assert coth(acoth(x)) == x assert csch(asinh(x)) == 1 / x assert csch(acosh(x)) == 1 / (sqrt(x - 1) * sqrt(x + 1)) assert csch(atanh(x)) == sqrt(1 - x ** 2) / x assert csch(acoth(x)) == sqrt(x - 1) * sqrt(x + 1) assert sech(asinh(x)) == 1 / sqrt(1 + x ** 2) assert sech(acosh(x)) == 1 / x assert sech(atanh(x)) == sqrt(1 - x ** 2) assert sech(acoth(x)) == sqrt(x - 1) * sqrt(x + 1) / x
def test_issue_4403(): x = Symbol('x') y = Symbol('y') z = Symbol('z', positive=True) assert integrate(sqrt(x**2 + z**2), x) == \ z**2*asinh(x/z)/2 + x*sqrt(x**2 + z**2)/2 assert integrate(sqrt(x**2 - z**2), x) == \ -z**2*acosh(x/z)/2 + x*sqrt(x**2 - z**2)/2 x = Symbol('x', real=True) y = Symbol('y', nonzero=True, real=True) assert integrate(1/(x**2 + y**2)**S('3/2'), x) == \ 1/(y**2*sqrt(1 + y**2/x**2))
def test_issue_4403(): x = Symbol('x') y = Symbol('y') z = Symbol('z', positive=True) assert integrate(sqrt(x**2 + z**2), x) == \ z**2*asinh(x/z)/2 + x*sqrt(x**2 + z**2)/2 assert integrate(sqrt(x**2 - z**2), x) == \ -z**2*acosh(x/z)/2 + x*sqrt(x**2 - z**2)/2 x = Symbol('x', real=True) y = Symbol('y', positive=True) assert integrate(1/(x**2 + y**2)**S('3/2'), x) == \ x/(y**2*sqrt(x**2 + y**2))
def test_derivs(): x = Symbol('x') assert coth(x).diff(x) == -sinh(x)**(-2) assert sinh(x).diff(x) == cosh(x) assert cosh(x).diff(x) == sinh(x) assert tanh(x).diff(x) == -tanh(x)**2 + 1 assert csch(x).diff(x) == -coth(x) * csch(x) assert sech(x).diff(x) == -tanh(x) * sech(x) assert acoth(x).diff(x) == 1 / (-x**2 + 1) assert asinh(x).diff(x) == 1 / sqrt(x**2 + 1) assert acosh(x).diff(x) == 1 / sqrt(x**2 - 1) assert atanh(x).diff(x) == 1 / (-x**2 + 1) assert asech(x).diff(x) == -1 / (x * sqrt(1 - x**2)) assert acsch(x).diff(x) == -1 / (x**2 * sqrt(1 + x**(-2)))
def test_derivs(): x = Symbol('x') assert coth(x).diff(x) == -sinh(x)**(-2) assert sinh(x).diff(x) == cosh(x) assert cosh(x).diff(x) == sinh(x) assert tanh(x).diff(x) == -tanh(x)**2 + 1 assert csch(x).diff(x) == -coth(x)*csch(x) assert sech(x).diff(x) == -tanh(x)*sech(x) assert acoth(x).diff(x) == 1/(-x**2 + 1) assert asinh(x).diff(x) == 1/sqrt(x**2 + 1) assert acosh(x).diff(x) == 1/sqrt(x**2 - 1) assert atanh(x).diff(x) == 1/(-x**2 + 1) assert asech(x).diff(x) == -1/(x*sqrt(1 - x**2)) assert acsch(x).diff(x) == -1/(x**2*sqrt(1 + x**(-2)))
def test_to_equation(self): a = pybamm.Symbol("a", domain="test") # Test _sympy_operator with self.assertRaises(NotImplementedError): pybamm.Arctan(a).to_equation() # Test print_name func = pybamm.Arcsinh(a) func.print_name = "test" self.assertEqual(func.to_equation(), sympy.symbols("test")) # Test Arcsinh self.assertEqual(pybamm.Arcsinh(a).to_equation(), sympy.asinh(a))
def test_asinh_noimpl(): assert asinh(I * (sqrt(3) - 1) / (2**(3 / 2))) == pi * I / 12 assert asinh(-I * (sqrt(3) - 1) / (2**(3 / 2))) == -pi * I / 12 assert asinh(I * (sqrt(5) - 1) / 4) == pi * I / 10 assert asinh(-I * (sqrt(5) - 1) / 4) == -pi * I / 10 assert asinh(I * (sqrt(5) + 1) / 4) == 3 * pi * I / 10 assert asinh(-I * (sqrt(5) + 1) / 4) == -3 * pi * I / 10
def test_asinh_noimpl(): assert asinh(I *(sqrt(3) - 1)/(2**(3/2))) == pi*I/12 assert asinh(-I *(sqrt(3) - 1)/(2**(3/2))) == -pi*I/12 assert asinh(I*(sqrt(5)-1)/4) == pi*I/10 assert asinh(-I*(sqrt(5)-1)/4) == -pi*I/10 assert asinh(I*(sqrt(5)+1)/4) == 3*pi*I/10 assert asinh(-I*(sqrt(5)+1)/4) == -3*pi*I/10
def test_integrate(): x = symbols('x') R, Dx = DifferentialOperators(ZZ.old_poly_ring(x), 'Dx') p = expr_to_holonomic(sin(x)**2 / x, x0=1).integrate((x, 2, 3)) q = '0.166270406994788' assert sstr(p) == q p = expr_to_holonomic(sin(x)).integrate((x, 0, x)).to_expr() q = 1 - cos(x) assert p == q p = expr_to_holonomic(sin(x)).integrate((x, 0, 3)) q = 1 - cos(3) assert p == q p = expr_to_holonomic(sin(x) / x, x0=1).integrate((x, 1, 2)) q = '0.659329913368450' assert sstr(p) == q p = expr_to_holonomic(sin(x)**2 / x, x0=1).integrate((x, 1, 0)) q = '-0.423690480850035' assert sstr(p) == q p = expr_to_holonomic(sin(x) / x) assert p.integrate(x).to_expr() == Si(x) assert p.integrate((x, 0, 2)) == Si(2) p = expr_to_holonomic(sin(x)**2 / x) q = p.to_expr() assert p.integrate(x).to_expr() == q.integrate((x, 0, x)) assert p.integrate((x, 0, 1)) == q.integrate((x, 0, 1)) assert expr_to_holonomic(1 / x, x0=1).integrate(x).to_expr() == log(x) p = expr_to_holonomic((x + 1)**3 * exp(-x), x0=-1).integrate(x).to_expr() q = (-x**3 - 6 * x**2 - 15 * x + 6 * exp(x + 1) - 16) * exp(-x) assert p == q p = expr_to_holonomic(cos(x)**2 / x**2, y0={ -2: [1, 0, -1] }).integrate(x).to_expr() q = -Si(2 * x) - cos(x)**2 / x assert p == q p = expr_to_holonomic(sqrt(x**2 + x)).integrate(x).to_expr() q = (x**Rational(3, 2) * (2 * x**2 + 3 * x + 1) - x * sqrt(x + 1) * asinh(sqrt(x))) / (4 * x * sqrt(x + 1)) assert p == q p = expr_to_holonomic(sqrt(x**2 + 1)).integrate(x).to_expr() q = (sqrt(x**2 + 1)).integrate(x) assert (p - q).simplify() == 0 p = expr_to_holonomic(1 / x**2, y0={-2: [1, 0, 0]}) r = expr_to_holonomic(1 / x**2, lenics=3) assert p == r q = expr_to_holonomic(cos(x)**2) assert (r * q).integrate(x).to_expr() == -Si(2 * x) - cos(x)**2 / x
def test_integrate(): x = symbols('x') R, Dx = DifferentialOperators(ZZ.old_poly_ring(x), 'Dx') p = expr_to_holonomic(sin(x)**2/x, x0=1).integrate((x, 2, 3)) q = '0.166270406994788' assert sstr(p) == q p = expr_to_holonomic(sin(x)).integrate((x, 0, x)).to_expr() q = 1 - cos(x) assert p == q p = expr_to_holonomic(sin(x)).integrate((x, 0, 3)) q = 1 - cos(3) assert p == q p = expr_to_holonomic(sin(x)/x, x0=1).integrate((x, 1, 2)) q = '0.659329913368450' assert sstr(p) == q p = expr_to_holonomic(sin(x)**2/x, x0=1).integrate((x, 1, 0)) q = '-0.423690480850035' assert sstr(p) == q p = expr_to_holonomic(sin(x)/x) assert p.integrate(x).to_expr() == Si(x) assert p.integrate((x, 0, 2)) == Si(2) p = expr_to_holonomic(sin(x)**2/x) q = p.to_expr() assert p.integrate(x).to_expr() == q.integrate((x, 0, x)) assert p.integrate((x, 0, 1)) == q.integrate((x, 0, 1)) assert expr_to_holonomic(1/x, x0=1).integrate(x).to_expr() == log(x) p = expr_to_holonomic((x + 1)**3*exp(-x), x0=-1).integrate(x).to_expr() q = (-x**3 - 6*x**2 - 15*x + 6*exp(x + 1) - 16)*exp(-x) assert p == q p = expr_to_holonomic(cos(x)**2/x**2, y0={-2: [1, 0, -1]}).integrate(x).to_expr() q = -Si(2*x) - cos(x)**2/x assert p == q p = expr_to_holonomic(sqrt(x**2+x)).integrate(x).to_expr() q = (x**(3/2)*(2*x**2 + 3*x + 1) - x*sqrt(x + 1)*asinh(sqrt(x)))/(4*x*sqrt(x + 1)) assert p == q p = expr_to_holonomic(sqrt(x**2+1)).integrate(x).to_expr() q = (sqrt(x**2+1)).integrate(x) assert (p-q).simplify() == 0 p = expr_to_holonomic(1/x**2, y0={-2:[1, 0, 0]}) r = expr_to_holonomic(1/x**2, lenics=3) assert p == r q = expr_to_holonomic(cos(x)**2) assert (r*q).integrate(x).to_expr() == -Si(2*x) - cos(x)**2/x
def test_asin(): x = Symbol('x') assert asin(nan) == nan assert asin(oo) == -I * oo assert asin(-oo) == I * oo assert asin(0) == 0 assert asin(Rational(1, 2)) == pi / 6 assert asin(1) == pi / 2 assert asin(sqrt(3) / 2) == pi / 3 assert asin(x).diff(x) == 1 / sqrt(1 - x**2) assert asin(0.2).is_real == True assert asin(-2).is_real == False assert asin(-2 * I) == -I * asinh(2)
def test_asin(): x = Symbol('x') assert asin(nan) == nan assert asin(oo) == -I*oo assert asin(-oo) == I*oo assert asin(0) == 0 assert asin(Rational(1,2)) == pi/6 assert asin(1) == pi/2 assert asin(sqrt(3)/2) == pi/3 assert asin(x).diff(x) == 1/sqrt(1-x**2) assert asin(0.2).is_real == True assert asin(-2).is_real == False assert asin(-2*I) == -I*asinh(2)
def test_conv12(): x = Symbol("x") y = Symbol("y") assert sinh(x/3) == sinh(sympy.Symbol("x") / 3) assert cosh(x/3) == cosh(sympy.Symbol("x") / 3) assert tanh(x/3) == tanh(sympy.Symbol("x") / 3) assert coth(x/3) == coth(sympy.Symbol("x") / 3) assert asinh(x/3) == asinh(sympy.Symbol("x") / 3) assert acosh(x/3) == acosh(sympy.Symbol("x") / 3) assert atanh(x/3) == atanh(sympy.Symbol("x") / 3) assert acoth(x/3) == acoth(sympy.Symbol("x") / 3) assert sinh(x/3)._sympy_() == sympy.sinh(sympy.Symbol("x") / 3) assert cosh(x/3)._sympy_() == sympy.cosh(sympy.Symbol("x") / 3) assert tanh(x/3)._sympy_() == sympy.tanh(sympy.Symbol("x") / 3) assert coth(x/3)._sympy_() == sympy.coth(sympy.Symbol("x") / 3) assert asinh(x/3)._sympy_() == sympy.asinh(sympy.Symbol("x") / 3) assert acosh(x/3)._sympy_() == sympy.acosh(sympy.Symbol("x") / 3) assert atanh(x/3)._sympy_() == sympy.atanh(sympy.Symbol("x") / 3) assert acoth(x/3)._sympy_() == sympy.acoth(sympy.Symbol("x") / 3)
def test_conv12(): x = Symbol("x") y = Symbol("y") assert sinh(x / 3) == sinh(sympy.Symbol("x") / 3) assert cosh(x / 3) == cosh(sympy.Symbol("x") / 3) assert tanh(x / 3) == tanh(sympy.Symbol("x") / 3) assert coth(x / 3) == coth(sympy.Symbol("x") / 3) assert asinh(x / 3) == asinh(sympy.Symbol("x") / 3) assert acosh(x / 3) == acosh(sympy.Symbol("x") / 3) assert atanh(x / 3) == atanh(sympy.Symbol("x") / 3) assert acoth(x / 3) == acoth(sympy.Symbol("x") / 3) assert sinh(x / 3)._sympy_() == sympy.sinh(sympy.Symbol("x") / 3) assert cosh(x / 3)._sympy_() == sympy.cosh(sympy.Symbol("x") / 3) assert tanh(x / 3)._sympy_() == sympy.tanh(sympy.Symbol("x") / 3) assert coth(x / 3)._sympy_() == sympy.coth(sympy.Symbol("x") / 3) assert asinh(x / 3)._sympy_() == sympy.asinh(sympy.Symbol("x") / 3) assert acosh(x / 3)._sympy_() == sympy.acosh(sympy.Symbol("x") / 3) assert atanh(x / 3)._sympy_() == sympy.atanh(sympy.Symbol("x") / 3) assert acoth(x / 3)._sympy_() == sympy.acoth(sympy.Symbol("x") / 3)
def test_bng_printer(): # Constants assert _bng_print(sympy.pi) == '_pi' assert _bng_print(sympy.E) == '_e' x, y = sympy.symbols('x y') # Binary functions assert _bng_print(sympy.sympify('x & y')) == 'x && y' assert _bng_print(sympy.sympify('x | y')) == 'x || y' # Trig functions assert _bng_print(sympy.sin(x)) == 'sin(x)' assert _bng_print(sympy.cos(x)) == 'cos(x)' assert _bng_print(sympy.tan(x)) == 'tan(x)' assert _bng_print(sympy.asin(x)) == 'asin(x)' assert _bng_print(sympy.acos(x)) == 'acos(x)' assert _bng_print(sympy.atan(x)) == 'atan(x)' assert _bng_print(sympy.sinh(x)) == 'sinh(x)' assert _bng_print(sympy.cosh(x)) == 'cosh(x)' assert _bng_print(sympy.tanh(x)) == 'tanh(x)' assert _bng_print(sympy.asinh(x)) == 'asinh(x)' assert _bng_print(sympy.acosh(x)) == 'acosh(x)' assert _bng_print(sympy.atanh(x)) == 'atanh(x)' # Logs and powers assert _bng_print(sympy.log(x)) == 'ln(x)' assert _bng_print(sympy.exp(x)) == 'exp(x)' assert _bng_print(sympy.sqrt(x)) == 'sqrt(x)' # Rounding assert _bng_print(sympy.Abs(x)) == 'abs(x)' assert _bng_print(sympy.floor(x)) == 'rint(x - 0.5)' assert _bng_print(sympy.ceiling(x)) == '(rint(x + 1) - 1)' # Min/max assert _bng_print(sympy.Min(x, y)) == 'min(x, y)' assert _bng_print(sympy.Max(x, y)) == 'max(x, y)'
def test_asin(): assert asin(nan) == nan assert asin.nargs == FiniteSet(1) assert asin(oo) == -I*oo assert asin(-oo) == I*oo # Note: asin(-x) = - asin(x) assert asin(0) == 0 assert asin(1) == pi/2 assert asin(-1) == -pi/2 assert asin(sqrt(3)/2) == pi/3 assert asin(-sqrt(3)/2) == -pi/3 assert asin(sqrt(2)/2) == pi/4 assert asin(-sqrt(2)/2) == -pi/4 assert asin(sqrt((5 - sqrt(5))/8)) == pi/5 assert asin(-sqrt((5 - sqrt(5))/8)) == -pi/5 assert asin(Rational(1, 2)) == pi/6 assert asin(-Rational(1, 2)) == -pi/6 assert asin((sqrt(2 - sqrt(2)))/2) == pi/8 assert asin(-(sqrt(2 - sqrt(2)))/2) == -pi/8 assert asin((sqrt(5) - 1)/4) == pi/10 assert asin(-(sqrt(5) - 1)/4) == -pi/10 assert asin((sqrt(3) - 1)/sqrt(2**3)) == pi/12 assert asin(-(sqrt(3) - 1)/sqrt(2**3)) == -pi/12 assert asin(x).diff(x) == 1/sqrt(1 - x**2) assert asin(0.2).is_real is True assert asin(-2).is_real is False assert asin(r).is_real is None assert asin(-2*I) == -I*asinh(2) assert asin(Rational(1, 7), evaluate=False).is_positive is True assert asin(Rational(-1, 7), evaluate=False).is_positive is False assert asin(p).is_positive is None
def test_presentation_mathml_trig(): mml = mpp._print(sin(x)) assert mml.childNodes[0].childNodes[0].nodeValue == 'sin' mml = mpp._print(cos(x)) assert mml.childNodes[0].childNodes[0].nodeValue == 'cos' mml = mpp._print(tan(x)) assert mml.childNodes[0].childNodes[0].nodeValue == 'tan' mml = mpp._print(asin(x)) assert mml.childNodes[0].childNodes[0].nodeValue == 'arcsin' mml = mpp._print(acos(x)) assert mml.childNodes[0].childNodes[0].nodeValue == 'arccos' mml = mpp._print(atan(x)) assert mml.childNodes[0].childNodes[0].nodeValue == 'arctan' mml = mpp._print(sinh(x)) assert mml.childNodes[0].childNodes[0].nodeValue == 'sinh' mml = mpp._print(cosh(x)) assert mml.childNodes[0].childNodes[0].nodeValue == 'cosh' mml = mpp._print(tanh(x)) assert mml.childNodes[0].childNodes[0].nodeValue == 'tanh' mml = mpp._print(asinh(x)) assert mml.childNodes[0].childNodes[0].nodeValue == 'arcsinh' mml = mpp._print(atanh(x)) assert mml.childNodes[0].childNodes[0].nodeValue == 'arctanh' mml = mpp._print(acosh(x)) assert mml.childNodes[0].childNodes[0].nodeValue == 'arccosh'
def test_mathml_trig(): mml = mp._print(sin(x)) assert mml.childNodes[0].nodeName == "sin" mml = mp._print(cos(x)) assert mml.childNodes[0].nodeName == "cos" mml = mp._print(tan(x)) assert mml.childNodes[0].nodeName == "tan" mml = mp._print(asin(x)) assert mml.childNodes[0].nodeName == "arcsin" mml = mp._print(acos(x)) assert mml.childNodes[0].nodeName == "arccos" mml = mp._print(atan(x)) assert mml.childNodes[0].nodeName == "arctan" mml = mp._print(sinh(x)) assert mml.childNodes[0].nodeName == "sinh" mml = mp._print(cosh(x)) assert mml.childNodes[0].nodeName == "cosh" mml = mp._print(tanh(x)) assert mml.childNodes[0].nodeName == "tanh" mml = mp._print(asinh(x)) assert mml.childNodes[0].nodeName == "arcsinh" mml = mp._print(atanh(x)) assert mml.childNodes[0].nodeName == "arctanh" mml = mp._print(acosh(x)) assert mml.childNodes[0].nodeName == "arccosh"
def test_mathml_trig(): mml = mp._print(sin(x)) assert mml.childNodes[0].nodeName == 'sin' mml = mp._print(cos(x)) assert mml.childNodes[0].nodeName == 'cos' mml = mp._print(tan(x)) assert mml.childNodes[0].nodeName == 'tan' mml = mp._print(asin(x)) assert mml.childNodes[0].nodeName == 'arcsin' mml = mp._print(acos(x)) assert mml.childNodes[0].nodeName == 'arccos' mml = mp._print(atan(x)) assert mml.childNodes[0].nodeName == 'arctan' mml = mp._print(sinh(x)) assert mml.childNodes[0].nodeName == 'sinh' mml = mp._print(cosh(x)) assert mml.childNodes[0].nodeName == 'cosh' mml = mp._print(tanh(x)) assert mml.childNodes[0].nodeName == 'tanh' mml = mp._print(asinh(x)) assert mml.childNodes[0].nodeName == 'arcsinh' mml = mp._print(atanh(x)) assert mml.childNodes[0].nodeName == 'arctanh' mml = mp._print(acosh(x)) assert mml.childNodes[0].nodeName == 'arccosh'
def test_asinh(): x, y = symbols('xy') assert asinh(x) == asinh(x) assert asinh(-x) == -asinh(x) assert asinh(nan) == nan assert asinh( 0) == 0 assert asinh(+1) == log(sqrt(2)+1) assert asinh(-1) == log(sqrt(2)-1) assert asinh(I) == pi*I/2 assert asinh(-I) == -pi*I/2 assert asinh(I/2) == pi*I/6 assert asinh(-I/2) == -pi*I/6 assert asinh(oo) == oo assert asinh(-oo) == -oo assert asinh(I*oo) == oo assert asinh(-I *oo) == -oo
def test_issue_4422(): assert integrate(1/sqrt(16 + 4*x**2), x) == asinh(x/2) / 2
def test_issue_1304(): z = Symbol('z', positive=True) assert integrate(sqrt(x**2 + z**2), x) == \ z**2*asinh(x/z)/2 + x*sqrt(x**2 + z**2)/2 assert integrate(sqrt(x**2 - z**2), x) == \ -z**2*acosh(x/z)/2 + x*sqrt(x**2 - z**2)/2
def test_issue1037(): assert cosh(asinh(Integer(3)/2)) == sqrt(Integer(13)/4)