Is fast_callable breaking my code?
I'm currently trying to make an interact for newton fractals that accepts most functions. This is my code for newton's method:
import numpy as np
def newton(z0,f,fp,MAX_IT):
cnt = 0
TOL = 1e-10
z = z0
condition = fp(z) != 0
a = z[condition]
for i in range(MAX_IT):
dz = f(a)/fp(a)
adz = np.absolute(dz)
if np.all(adz < TOL) :
return a
cnt += 1
a -= dz
return False
Input:
g(a) = sin(a)
f = fast_callable(g, vars=(a))
fp = fast_callable(diff(g), vars(a))
x = np.linspace(-7,7,100)
y = np.linspace(-7,7,100)
xx,yy = np.meshgrid(x,y)
newton(xx+yy*1j,f,fp,150)
Output:
array([-6.28318531+0.j, -6.28318531+0.j, -6.28318531+0.j, ...,
6.28318531+0.j, 6.28318531+0.j, 6.28318531+0.j])
I'm supposed to get 0
or 2*pi
in addition to the above. When I use numpy
functions I don't have this issue. Is fast_callable
breaking something?
For
one can obtain the same result