C/C++

Вычислить значение многочлена

На Пайтоне? А в рубрику С/С++ каким ветром занесло? На Пайтоне с циклом for будет так:
 while True:
x, n = input('x n: ').split()
x, n, z, p = float(x), int(n), 1, 1
for i in range(1, n+1): p *= x; z += p/i
print(z)
Александр Простов
Александр Простов
66 572
Лучший ответ
Многочлен – это выражение вида P(x) = anxn + an-1xn-1 + ... + a1x + a0, где xn, xn-1, ... , x, 1 и 0 – это степени переменной x, а an, an-1, ... , a1 и a0 – это коэффициенты многочлена.

Для того, чтобы вычислить значение многочлена P(x) в точке x = a, необходимо подставить значение переменной x равное a в выражение многочлена:

P(a) = ana^n + an-1a^n-1 + ... + a1a + a0

Таким образом, мы получим числовое значение многочлена в точке a.

Пример:

Рассмотрим многочлен P(x) = 3x^3 - 2x^2 + 5x - 1.

Для того, чтобы вычислить значение многочлена P(x) в точке x = 2, мы подставим значение переменной x равное 2 в выражение многочлена:

P(2) = 3(2)^3 - 2(2)^2 + 5(2) - 1
= 3(8) - 2(4) + 10 - 1
= 24 - 8 + 10 - 1
= 25

Таким образом, значение многочлена P(x) в точке x = 2 равно 25.

Также можно использовать метод Горнера для упрощения вычисления значения многочлена в точке. Этот метод заключается в последовательном вычислении всех слагаемых многочлена с использованием полученных результатов:

1. Для начала преобразуем выражение многочлена P(x) в следующую форму:

P(x) = ((anx + an-1)x + an-2)x + ... + a1)x + a0

то есть:

P(x) = a0 + x(a1 + x(a2 + ... + x(an-1 + x(an))...))

2. Значение многочлена в точке x = a можно вычислить следующим образом:

P(a) = a0 + a((a1 + a(a2 + ... + a(an-1 + a(an))...)))

3. Применение метода Горнера для многочлена P(x) = 3x^3 - 2x^2 + 5x - 1 в точке x = 2:

a3 = 3; a2 = -2; a1 = 5; a0 = -1;
P(2) = -1 + 2(5 + 2(-2 + 2(3)))
= -1 + 2(5 + 2(-1))
= -1 + 2(3)
= 5

Значение многочлена P(x) в точке x = 2 также равно 5.

Важно отметить, что при вычислении значения многочлена в точке необходимо быть внимательным при подстановке значений, чтобы не допустить ошибок в вычислении. Также стоит убедиться в правильности расчетов при использовании метода Горнера, чтобы избежать возможных ошибок.
 from mpmath import mp, log, re, lerchphi as lerch 
x, n, mp.dps = float(input('x = ')), int(input('n = ')), 20
print(re(1 + (x ** (n + 1) * (-lerch(x, 1, n + 1)) - log(1 - x))))