Как подставить одну переменную и вычислить значение другой?

Работаю с полиномами. Написал вот такую функцию, которая принимает корни полинома и выдает сам полином.

Вопрос: Могу ли я подставить значения x в этот полином? Заранее спасибо.

x = np.linspace(-1.9, 1.95, num=25, endpoint=True)


def c_find(*roots):
    from sympy import Symbol
    x = Symbol('x')
    whole = 1
    for root in roots:
        whole *= (x - root)
    return whole.expand()


p = c_find(-1.9, -1.1, -0.1, 0.6, 1.95)
print(p)

Вывод: x5 + 0.55*x4 - 4.345* x3 - 2.2585*x2 + 2.26335*x + 0.24453


Ответы (2 шт):

Автор решения: karmik

Если я правильно понял:

import numpy as np
from sympy import Symbol

x = np.linspace(-1.9, 1.95, num=25, endpoint=True)

def c_find(*roots):
    from sympy import Symbol
    x = Symbol('x')
    whole = 1
    for root in roots:
        whole *= (x - root)

    return whole.expand()

p = c_find(-1.9, -1.1, -0.1, 0.6, 1.95)

for val in x:
    print(p.subs(Symbol('x'), val))

Дока https://docs.sympy.org/latest/tutorial/basic_operations.html.

→ Ссылка
Автор решения: Владислав Харламов

Функцию, которая принимает корни и выдает функцию-многочлен, также можно было написать так:

from functools import reduce
from operator import mul

def poly(*roots):
    return lambda x: reduce(mul, [(x - root) for root in roots], 1)

f = poly(1,2,3) # (x-1)(x-2)(x-3)
print(f(5)) # (5 - 1) * (5 - 2) * (5 - 3) = 24
→ Ссылка