Вычислить полином - PullRequest
0 голосов
/ 16 мая 2018

Я хочу вычислить многочлен по значению х. Я пытался написать функция, которая принимает в качестве аргумента массив целых и целых чисел х функция вернет значение многочлена в х.

def pol(L, x):
    P = None
    for i in L:
        P = L[0] * (x ** 0) + L[1] * (x ** 1) + L[2] * (x ** 2)
    return P

L = [0, 2, 4]
x = 3
print(pol(L, x))

я тоже пробовал

def pol(L, x):
    P = None
    for i in L:
        j = 0
        P = sum(i * (x ** j))
        j += 0
    return P

L = [0, 2, 4]
x = 3
print(pol(L, x))

Это вернет 42 для этого примера. Я не знаю, как увеличить. Спасибо

1 Ответ

0 голосов
/ 16 мая 2018

Основываясь на ваших попытках, можно получить один простой способ получить полином:

def poly(p, x):
    val = 0
    for i, pp in enumerate(p):
        val += pp * x**i

    return val

Однако есть более быстрые и элегантные способы сделать это. Я настоятельно рекомендую вам использовать numpy.polyval() для эффективности.

Обратите внимание, что для реализации numpy p[0] является полиномом высшего порядка, в то время как для показанного здесь примера p[0] является самым низким порядком!

p = [0, 2, 4]
x = 3

poly(p, x)
>> 42

import numpy as np
poly(p, x) == np.polyval(p[::-1], x)
>> True
...