[Numpy-discussion] polynomial fromroots

Charles R Harris charlesr.harris at gmail.com
Sat Oct 9 22:05:08 EDT 2010


On Sat, Oct 9, 2010 at 8:01 PM, Charles R Harris
<charlesr.harris at gmail.com>wrote:

>
>
> 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.        ])
>
>
Oh, and least squares follows the same convention:

In [5]: x = linspace(-1,1,10)

In [6]: y = (x - 1)*( x + 1.88494037)*(x - 0.0178126)

In [7]: p = poly.Polynomial.fit(x, y, 3)

In [8]: p
Out[8]: Polynomial([ 0.03357569, -1.90070346,  0.86712777,  1.        ],
[-1.,  1.])

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20101009/f0c96618/attachment.html>


More information about the NumPy-Discussion mailing list