In [1]:
using NewtonMethod


Syntax: newton(function, Interval(lo, hi), calls)
Warning: requiring "NewtonMethod" did not define a corresponding module.

In [2]:
f(x) = sin(x)


Out[2]:
f (generic function with 1 method)

In [3]:
newton(f, Interval(-20., 20.), 40)


Out[3]:
7-element Array{Interval,1}:
 Interval(-18.849555921516185,-18.84955592151618) 
 Interval(-15.707963267926392,-15.707963267926392)
 Interval(-9.424777960746805,-9.424777960746804)  
 Interval(-6.283185307157011,-6.2831853071570105) 
 Interval(-3.1415926535897936,-3.141592653589793) 
 Interval(-0.0,5.0e-324)                          
 Interval(12.566370614381748,12.56637061438175)   

In [4]:
newton(f, Interval(-21., 21.), 40)


Out[4]:
8-element Array{Interval,1}:
 Interval(-15.707963267948967,-15.707963267948966)
 Interval(-12.566370614359174,-12.566370614359172)
 Interval(-9.424777960746805,-9.424777960746804)  
 Interval(-6.283185307157011,-6.2831853071570105) 
 Interval(-0.0,5.0e-324)                          
 Interval(12.566370614381748,12.56637061438175)   
 Interval(15.707963267971541,15.707963267971541)  
 Interval(18.849555921561333,18.849555921561336)  

In [5]:
newton(f, Interval(-23., 23.), 40)


Out[5]:
7-element Array{Interval,1}:
 Interval(-21.991148575105978,-21.991148575105974)
 Interval(-18.849555921516185,-18.84955592151618) 
 Interval(-15.707963267926392,-15.70796326792639) 
 Interval(-12.566370614336599,-12.566370614336597)
 Interval(-9.424777960746805,-9.424777960746804)  
 Interval(-6.283185307157011,-6.2831853071570105) 
 Interval(-0.0,5.0e-324)                          

In [6]:
newton(f, Interval(-21., 22.), 40)


Out[6]:
8-element Array{Interval,1}:
 Interval(-15.707963267948967,-15.707963267948966)
 Interval(-12.566370614359174,-12.566370614359172)
 Interval(-9.424777960746805,-9.424777960746804)  
 Interval(-6.283185307157011,-6.2831853071570105) 
 Interval(-0.0,5.0e-324)                          
 Interval(12.566370614381748,12.56637061438175)   
 Interval(15.707963267971541,15.707963267971543)  
 Interval(21.991148575151126,21.99114857515113)   

In [7]:
newton(f, Interval(-22., 21.), 40)


Out[7]:
9-element Array{Interval,1}:
 Interval(-21.991148575128555,-21.991148575128552)
 Interval(-18.849555921516185,-18.849555921516185)
 Interval(-15.707963267948967,-15.707963267948966)
 Interval(-9.424777960746805,-9.424777960746804)  
 Interval(-6.283185307179587,-6.283185307179586)  
 Interval(-3.1415926535897936,-3.141592653589793) 
 Interval(12.566370614381748,12.56637061438175)   
 Interval(15.707963267971541,15.707963267971541)  
 Interval(18.849555921561333,18.849555921561336)  

In [8]:
newton(f, Interval(-20., 20.), 40)


Out[8]:
7-element Array{Interval,1}:
 Interval(-18.849555921516185,-18.84955592151618) 
 Interval(-15.707963267926392,-15.707963267926392)
 Interval(-9.424777960746805,-9.424777960746804)  
 Interval(-6.283185307157011,-6.2831853071570105) 
 Interval(-3.1415926535897936,-3.141592653589793) 
 Interval(-0.0,5.0e-324)                          
 Interval(12.566370614381748,12.56637061438175)   

In [9]:
newton(f, Interval(-20., 20.), 50)


Out[9]:
7-element Array{Interval,1}:
 Interval(-18.849555921516185,-18.84955592151618) 
 Interval(-15.707963267926392,-15.707963267926392)
 Interval(-9.424777960746805,-9.424777960746804)  
 Interval(-6.283185307157011,-6.2831853071570105) 
 Interval(-3.1415926535897936,-3.141592653589793) 
 Interval(-0.0,5.0e-324)                          
 Interval(12.566370614381748,12.56637061438175)   

In [10]:
newton(f, Interval(-20., 20.), 30)


Out[10]:
7-element Array{Interval,1}:
 Interval(-18.849555921516185,-18.84955592151618) 
 Interval(-15.707963267926392,-15.707963267926392)
 Interval(-9.424777960746805,-9.424777960746804)  
 Interval(-6.283185307157011,-6.2831853071570105) 
 Interval(-3.1415926535897936,-3.141592653589793) 
 Interval(-0.0,2.2538265914667098e-260)           
 Interval(12.566370614381748,12.56637061438175)   

In [11]:
newton(f, Interval(-24., 22.), 40)


Out[11]:
9-element Array{Interval,1}:
 Interval(-21.991148575128555,-21.991148575128552)
 Interval(-18.849555921538762,-18.84955592153876) 
 Interval(-9.424777960746805,-9.424777960746804)  
 Interval(-6.283185307179587,-6.283185307179586)  
 Interval(-3.1415926535897936,-3.141592653589793) 
 Interval(-0.0,0.0)                               
 Interval(6.283185307202162,6.283185307202162)    
 Interval(18.849555921561333,18.849555921561336)  
 Interval(21.991148575151126,21.99114857515113)   

The roots that are lost depend on the points of the interval. No other function (except sin and based on it cos) does this. Interestingly, changing the procedure of sin into an alternative one left the problem unchanged.


In [ ]: