>> << Ndx Usr Pri Phr Dic Rel Voc !: wd 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 : 0
    ] - x.&p. % deriv@]
    )

       r=: c kerner ^:_ a
       +.(/:|) r                  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

>> << Ndx Usr Pri Phr Dic Rel Voc !: wd Help Dictionary