Создать полином с заданными коэффициентами - PullRequest
0 голосов
/ 30 октября 2019

Я хочу создать многочлен с заданными коэффициентами в Python, но без numpy или любой подобной библиотеки.

Например, если input (12,2,5,3), который является a0, a1, a2, a3 соответственно, ожидаемый результат равен 12 + 2x + 5x ^ 2 + 3x ^ 3.

def polynomial(p,x):
    return sum((a*x**i for i,a in enumerate(p)))

polynomial(([12,2,5,3]),x)

Я попробовал код выше, но получил сообщение об ошибке, естественно, что x не определен. Что не так с кодом или есть проблема с его запуском?

Ответы [ 3 ]

1 голос
/ 30 октября 2019

Ошибка x is not defined не в вашей функции, а в том, где вы вызываете функцию. Вам нужно вызвать функцию с фактическим номером:

poly = polynomial([12, 2, 5, 3], 5)

Также вы можете рассмотреть возможность создания poly функции, которая возвращает функцию;а именно, чтобы вы могли использовать синтаксис:

poly = polynomial([12, 2, 5, 3])
poly(5) # poly evaluated at 5
poly(10) # poly evaluated at 10

Для этого используйте следующий синтаксис:

def polynomial(p):
    return lambda x: sum(a*x**i for i, a in enumerate(p))
0 голосов
/ 30 октября 2019

Вы можете воспользоваться map:

def polynomial(p, x):
  return sum(map(lambda (i, c): c * pow(x, i), enumerate(p)))
0 голосов
/ 30 октября 2019

Я не знаю, если это то, что вы ищете, но вы можете использовать sympy для символического языка, что-то вроде этого:

from sympy import symbols

def polynomial(coefs,var):
    x = symbols(var)
    return [c*x for c in coefs]

>> polynomial([1,2,3,4],'x')
[x, 2*x, 3*x, 4*x]

Если это не решит вашу проблему, этоможет дать вам представление о том, как ее решить.

С уважением

...