[Numpy-discussion] polynomial fromroots
Charles R Harris
charlesr.harris at gmail.com
Sat Oct 9 22:01:09 EDT 2010
On Sat, Oct 9, 2010 at 7:47 PM, <josef.pktd at gmail.com> wrote:
> I'm trying to see whether I can do this without reading the full manual.
>
> Is it intended that fromroots normalizes the highest order term
> instead of the lowest?
>
>
> >>> import numpy.polynomial as poly
>
> >>> p = poly.Polynomial([1, -1.88494037, 0.0178126 ])
> >>> p
> Polynomial([ 1. , -1.88494037, 0.0178126 ], [-1., 1.])
> >>> pr = p.roots()
> >>> pr
> array([ 0.53320748, 105.28741219])
> >>> poly.Polynomial.fromroots(pr)
> Polynomial([ 56.14003571, -105.82061967, 1. ], [-1., 1.])
> >>>
>
> renormalizing
>
> >>> p2 = poly.Polynomial.fromroots(pr)
> >>> p2/p2.coef[0]
> Polynomial([ 1. , -1.88494037, 0.0178126 ], [-1., 1.])
>
>
> this is, I think what I want to do, invert roots that are
> inside/outside the unit circle (whatever that means
>
> >>> pr[np.abs(pr)<1] = 1./pr[np.abs(pr)<1]
> >>> p3 = poly.Polynomial.fromroots(pr)
> >>> p3/p3.coef[0]
> Polynomial([ 1. , -0.54270529, 0.0050643 ], [-1., 1.])
>
>
Wrong function ;) You defined the polynomial by its coefficients. What you
want to do is
In [1]: import numpy.polynomial as poly
In [2]: p = poly.Polynomial.fromroots([1, -1.88494037, 0.0178126 ])
In [3]: p
Out[3]: Polynomial([ 0.03357569, -1.90070346, 0.86712777, 1. ],
[-1., 1.])
In [4]: p.roots()
Out[4]: array([-1.88494037, 0.0178126 , 1. ])
Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20101009/b3c6585e/attachment.html>
More information about the NumPy-Discussion
mailing list