2014-05-20 26 views
5

Zastanawiam się, czy istnieje wygodna funkcja odwrotna np.polyval(), gdzie podaję wartość y i rozwiązuje ona dla x?Funkcja odwrotna od numpy.polyval()

Znam jeden sposób mogę to zrobić:

import numpy as np 

# Set up the question 
p = np.array([1, 1, -10]) 
y = 100 

# Solve 
p_temp = p 
p_temp[-1] -= y 
x = np.roots(p_temp) 

Jednak wydaje mi się najbardziej zgodzi się na to, że kod ma niską czytelność. Jakieś sugestie?

Odpowiedz

9

Co powiesz na coś takiego?

In [19]: p = np.poly1d([1, 1, -10]) # Use a poly1d to represent the polynomial. 

In [20]: y = 100 

In [21]: (p - y).roots 
Out[21]: array([-11., 10.]) 

Przedmiotem poly1d realizuje operacje arytmetyczne, aby powrócić nową poly1d obiektu, więc p - y to nowy poly1d:

In [22]: p - y 
Out[22]: poly1d([ 1, 1, -110]) 

Atrybut tematyce poly1d zwrotów roots czego można się spodziewać.

Powiązane problemy