Полиномиальная оценка с использованием python - PullRequest
0 голосов
/ 02 апреля 2020

Оценить полином, учитывая значение для x . Входные данные представляют собой список коэффициентов и значения для x . Выходными данными является полиномиальная сумма, оцененная в x .

Ответы [ 3 ]

1 голос
/ 02 апреля 2020

Вы можете использовать рекурсию, подумайте, как вы можете написать многочлен. Вы можете ссылаться на метод Хорнера в Википедии.

def evaluate_poly(x, coefficients):
    if len(coefficients) == 1:
        return coefficients[0]
    return coefficients[0] + evaluate_poly(x, coefficients[1:])*x

a = [1, 2, 0, 3]
x = 1.5
print(evaluate_poly(x, a)) # 14.125
1 голос
/ 02 апреля 2020

Эта опция не использует оператор возведения в степень:

def pol_eval(a, x):
    result = 0
    # for every n in 0..len(a)-1
    for n, a_n in enumerate(a):
        # compute x^n
        x_power_n = 1
        for i in range(n):
            x_power_n *= x
        # add a_n * x^n to the final result
        result += a_n * x_power_n
    return result

Пример:

a = [1,2,0,3] # coefficients
x = 1.5
print(pol_eval(a, x)) # 14.125
0 голосов
/ 02 апреля 2020

Вы можете сделать это в al oop, где вы накапливаете произведения коэффициентов с постепенно увеличивающейся степенью x, получаемой умножением на x на каждой итерации:

a      = [1,2,0,3]
x      = 1.5

result = 0
xPower = 1
for coeff in a:
    result += coeff * xPower
    xPower *= x

print(result) # 14.125 = 1 + 2x + 0x^2 + 3x^3 = 1 + 3 + 0 + 10.125

Обратите внимание, что это может быть дальше упрощается, возвращаясь назад в списке коэффициентов и умножая предыдущий результат на x перед добавлением коэффициента:

result = 0
for coeff in reversed(a):
    result = coeff + result * x
...