Я ожидал, что функции poly () и root () обратны друг другу. Однако это не совсем так:
# Polys coeffs
pol_c = np.poly([-1, 1, 1, 10]) # Get Polynomial coeffs for eqt with stated roots
# Roots from the poly equation
root_val = np.roots(pol_c)
# Roots from the poly equation, manually entered as integers
roots_v2 = np.roots([1,-11,9,11,-10])
print(pol_c)
print(root_val)
print(roots_v2)
Придает
[1. -11. 9. 11. -10.]
[10. + 0.0000000e + 00j -1. + 0.0000000e + 00j 1. + 9.6357437e-09j
1.-9.6357437e-09j]
[10. + 0.0000000e + 00j -1. + 0.0000000e + 00j 1. + 9.6357437e-09j
1.-9.6357437e-09j]
т. 3-й и 4-й корни (слегка) мнимые, а не реальные
Моей первой мыслью была ошибка с плавающей запятой, но учитывая, что root () выдает тот же ответ для float и int , что, похоже, не так. Кроме того, я ожидаю, что poly () даст нецелочисленные ответы, если точность с плавающей запятой ограничивает решения.