In [1]:
%matplotlib inline
In [2]:
import sympy
from sympy import log, exp, integrate, EulerGamma, pi, symbols, Function, simplify
from sympy.functions.special.gamma_functions import digamma, gamma
from sympy.plotting import plot
In [3]:
x = symbols('x')
F = Function('F')
f = digamma(-1/x) + EulerGamma.evalf() # - digamma(1).evalf()
In [4]:
plot(f, (x, 1.7377, 5))
Out[4]:
In [5]:
plot(f, (x, -10, -1e-5))
Out[5]:
In [6]:
plot(f, (x, -100, -10))
Out[6]:
In [7]:
[[i, v, v2, v - v2] for i in xrange(2,25) for v, v2 in [(f.evalf(subs={x: i}), f.evalf(subs={x: i/(1.0-i)}))]]
Out[7]:
In [8]:
f.evalf(subs={x:1e+15}) / 1e+15
Out[8]:
In [9]:
plot(f, (x, -3, -0.5))
Out[9]:
In [10]:
digamma(1)
Out[10]:
In [11]:
digamma(1).evalf()
Out[11]:
In [12]:
f.evalf(subs={x:-1})
Out[12]:
In [13]:
gamma(1)
Out[13]:
In [14]:
[[y, y.diff(), simplify(y.diff(x)/y), simplify(log(y).diff(x))] for y in [-1/x, 1/(1-x), x/(1-x), 1-1/x]]
Out[14]:
In [15]:
[[y, simplify(exp(1j*pi + integrate(log(y).diff(x), x)))] for y in [-1/x, 1/(1-x), x/(1-x), 1-1/x]]
Out[15]:
In [16]:
[[y, exp(integrate(simplify(log(1/(1-y)).diff(x)), x))] for y in [-1/x, 1/(1-x), x/(1-x), 1-1/x]]
Out[16]:
In [17]:
log(-1).evalf()
Out[17]:
In [18]:
[[y, simplify(exp(log(-1) + integrate(log(y).diff(x), x)))] for y in [-1/x, 1/(1-x), x/(1-x), 1-1/x]]
Out[18]:
In [19]:
exp(integrate(simplify(log(integrate(F(-1/x), x)).diff(x)), x))
Out[19]:
In [20]:
h = simplify(f - x)
In [21]:
plot(h, (x, -1e7, -1e5))
Out[21]:
In [22]:
plot(h, (x, 1e5, 1e7))
Out[22]:
In [23]:
[[i, v, v - i, v - v2 - i] for i in xrange(int(1e6),int(1e6+25)) for v, v2 in [(f.evalf(subs={x: i}), f.evalf(subs={x: i/(1.0-i)}))]]
Out[23]:
In [24]:
f.subs(x, 2)
Out[24]:
In [25]:
f.subs(x, 2).evalf()
Out[25]:
In [26]:
[[i, f.subs(x, i)] for i in xrange(10)]
Out[26]:
In [27]:
[[i, f.subs(x, i)] for i in xrange(0,-10,-1)]
Out[27]:
In [28]:
plot(f-x, (x, 1e5, 1e7))
Out[28]:
In [29]:
plot(f.subs(x, x/(1-x)), (x, 1e5, 1e7))
Out[29]:
In [30]:
plot(f-x-f.subs(x, x/(1-x)), (x, 1e5, 1e7))
Out[30]:
In [31]:
EulerGamma.evalf()
Out[31]:
In [32]:
plot(f-x-f.subs(x, x/(1-x)), (x, 1.1, 9))
Out[32]:
In [33]:
plot(f-f.subs(x, x/(1-x)), (x, 1.1, 9))
Out[33]:
In [34]:
plot(f-f.subs(x, x/(1-x)), (x, -9, 9))
Out[34]:
In [35]:
plot(f.subs(x, x/(1-x)), (x, 1e3, 1e6))
Out[35]:
In [36]:
plot(f.subs(x, x/(1-x)), (x, -1e2, -1))
Out[36]:
In [37]:
f.subs(x, x/(1-x)).subs(x, -1).evalf()
Out[37]:
In [38]:
f.subs(x, x/(1-x)).subs(x, 1).evalf()
Out[38]:
In [39]:
f.subs(x, -1).evalf()
Out[39]:
In [40]:
f.subs(x, 1).evalf()
Out[40]:
In [41]:
simplify((-1/x).subs(x, x/(1-x)))
Out[41]:
In [42]:
h = digamma(-1/x) - digamma((x-1)/x) - x
In [43]:
[simplify(h.subs(x, i)) for i in xrange(2, 25)]
Out[43]:
In [44]:
[simplify(h.subs(x, i)).evalf() for i in xrange(2, 25)]
Out[44]:
In [45]:
def newton(h, x, x0, eps=1e-15):
c = x0
while True:
if abs(h.evalf(subs={x: c})) < eps:
break
c += -(h / h.diff(x)).evalf(subs={x: c})
return c
In [46]:
[[r, fr] for r in [newton(f, x, 2)] for fr in [f.evalf(subs={x: r})]]
Out[46]:
In [47]:
[[r, fr] for r in [newton(f - EulerGamma.evalf(), x, 2)] for fr in [f.evalf(subs={x: r}) - EulerGamma.evalf()]]
Out[47]:
In [48]:
[f.evalf(subs={x: -1}), 0, (digamma(1) + EulerGamma).evalf(), 0]
Out[48]:
In [49]:
[f.evalf(subs={x: -1.0/2}), 1, (digamma(2) + EulerGamma).evalf(), 1]
Out[49]:
In [50]:
(x/(1-x)).integrate(x)
Out[50]:
In [51]:
exp((x/(1-x)).integrate(x))
Out[51]:
In [52]:
simplify((exp(-x)/(x - 1)).diff() / exp(-x)/(x - 1))
Out[52]:
In [53]:
simplify((-x - log(x - 1) + 123456789).diff(x))
Out[53]:
In [54]:
simplify((-x - (x - 1)**2 + 1)/(x - 1)**4 - -x/(x - 1))
Out[54]:
In [55]:
simplify(exp(pi*1j + (-1/x).integrate(x)))
Out[55]:
In [56]:
simplify(exp(pi*1j + (x/(1-x)).integrate(x)))
Out[56]:
In [57]:
simplify(exp(pi*1j + (1/(1-x)).integrate(x)))
Out[57]:
In [58]:
simplify(exp(pi*1j + (x**2).integrate(x)))
Out[58]:
In [ ]: