Processing math: 100%

First time here? Check out the FAQ!

Ask Your Question
1

Is fast_callable breaking my code?

asked 1 year ago

fermiona gravatar image

updated 1 year 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 ( 1 year ago )

1 Answer

Sort by » oldest newest most voted
1

answered 1 year ago

Emmanuel Charpentier gravatar image

updated 1 year 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: 1 year ago

Seen: 639 times

Last updated: Jun 12 '23