Loading [MathJax]/jax/output/HTML-CSS/jax.js
Ask Your Question
1

Is fast_callable breaking my code?

asked 2 years ago

fermiona gravatar image

updated 2 years ago

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?

Preview: (hide)

Comments

For

f=sin
fp=cos

one can obtain the same result

achrzesz gravatar imageachrzesz ( 2 years ago )

1 Answer

Sort by » oldest newest most voted
1

answered 2 years ago

Emmanuel Charpentier gravatar image

updated 2 years ago

Your code finds one solution then stops.

To get the other solutions, you shound recursively search solutions in the intervaldefined by the bounds of the original interval and your first solution.

The trick is, of course, to detect when to stop for good... Left to the reader as a ((very) interesting) exercise. Hint : what your function should do when asked to find the roots of sin1x between π and π ?

BTW, the use of numpy is irrelevant. you might as well use the code fior Newton's method already existing in Sage, using numpy-defined variables and functions.

HTH,

Preview: (hide)
link

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2 years ago

Seen: 753 times

Last updated: Jun 12 '23