Статья Автор: Лебедев Дмитрий Алексеевич

Схема Горнера для многочлена и перевода чисел в 10 СС

Пусть есть многочлен 
\(f(x)=\displaystyle\sum_{i=0}^{n} a_i\cdot x^i\) или \(f(x) = a_n\cdot x^n+a_{n-1}\cdot x^{n-1}+\dots +a_1\cdot x+ a_0\)
Необходимо вычислить значение этого многочлена при некотором значении \(x \)
Для этого можно применить схему Горнера, которую можно записать следующим образом
\(f(x) = (\dots (a_n\cdot x+a_{n-1})\cdot x^{n-1}+\dots +a_1)\cdot x+ a_0\)
Поясним примером
\(f(x) = x^4+2x^3+3x^2+4x+5=(((x+2)\cdot x+ 3)\cdot x+4)\cdot x + 5 \)
Такую схему несложно организовать с помощью программы или на калькуляторе, используя следующий алгоритм:
y = 0 # инициализация результата
x = <значение аргумента>
while (<пока коэффициенты не закончились>)
{  a = <очередной коэффициент>;
  y = y * x +a;
}
# y содержит значение функции

 

Напишите программу на C++, которая решает данную задачу.
Программа должна получать
1 строка - значение аргумента, 
2 строка - коэффициенты "полной" записи многочлена, начиная с коэффициента при старшей степени.
Проверьте правильность работы своей программы на примерах из таблицы
многочлен входные данные выходные данные
\(x^2 + 2x +1\) 5
1 2 1
36
\(2x^3-x + 5\) 10
2 0 -1 5
1995
\(x^{10}\) 2
1 0 0 0 0 0 0 0 0 0 0
1024


Обратим внимание на то, что представление числа в нормальной форме есть запись многочлена.
Тогда для перевода числа в 10-ю СС надо просто вычислить значение многочлена.
Например:
\(12345_8 = (1\cdot8^4 + 2\cdot8^3+3\cdot8^2+4\cdot8^1+5)_{10} =f(8)\ где,\\f(x) = x^4+2x^3+3x^2+4x+5\)
Используя схему Горнера для вычисления можно упростить перевод чисел в 10-ю СС на калькуляторе, бумаге и на счётах.
 

Напишите программу, переводящую числа в 10-ю СС из систем счисления от 2 до 9

Печать