>> 
<< 
Usr 
Pri 
JfC 
LJ 
Phr 
Dic 
Rel 
Voc 
!: 
Help 
Dictionary
27. Polynomials: Roots from Coefficients (Kerner’s Method)
Newton’s method applies to one root at a time and 
requires a good starting approximation.  Kerner’s method is a 
generalization that gives all the roots, starting from a 
list a and dividing each element 
of the residual f a by the derivative 
with respect to the corresponding root.  
It applies only to a polynomial whose highest order coefficient 
is 1, and we first normalize 
the coefficients by dividing by the last, yielding a polynomial 
having the same roots.  The method converges to complex roots only 
if at least one of the initial approximations is complex.  
We will use the Taylor series approximation to the 
exponential function, because the corresponding polynomial 
has complex roots:
   ]d=: ^ t. i.6
1 1 0.5 0.166667 0.0416667 0.00833333
   ]c=: (norm=: % {:) d
120 120 60 20 5 1
   +. a=: (init=: r.@}.@i.@#) c |a
 0.540302  0.841471 1 1 1 1 1
_0.416147  0.909297
_0.989992  0.14112
_0.653644 _0.756802
 0.283662 _0.958924
   deriv=: [: */ 0&=@{.}@(-/~ ,: 1:)
   kerner=: 1 : '] - x&p. % deriv@]'
   r=: c kerner ^:_ a
   +.(/:|) r                  NB. Real and imaginary parts of roots sorted by magnitude
_2.18061 4.57601e_31
 _1.6495     1.69393
 _1.6495    _1.69393
0.239806     3.12834
0.239806    _3.12834
   >./|c p. r
1.04488e_13
These results may be compared with the use of the primitive p. 
on the un-normalized coefficients d . Thus:
   p. 2 4 2
+-+-----+
|2|_1 _1|
+-+-----+
   ,.;}.p. d
 0.2398064j3.12834
0.2398064j_3.12834
   _1.6495j1.69393
  _1.6495j_1.69393
          _2.18061
Newton’s method may also be used for a complex root:
   +. d NEWTON ^:0 1 2 3 _ a=: 1j1
        1        1
0.0166065  0.99639
_0.990523 0.992532
 _1.95338  1.10685
  _1.6495   1.6939
>> 
<< 
Usr 
Pri 
JfC 
LJ 
Phr 
Dic 
Rel 
Voc 
!: 
Help 
Dictionary