Задача 29. Вычисление значения полинома 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Задача 29. Вычисление значения полинома



Условие задачи. Для заданного x вычислить значение полинома  по схеме Горнера.

В общем случае полином степени n представляет собой многочлен P (x) = a 0 xn + a 1 xn -1 + a 2 xn -2 + … + akxn - k + … + an -2 x 2 + an -1 x 1 + an . Для вычисления его значения при заданном х по схеме Горнера предварительно выполняется деление исходного полинома с остатком на x, в результате чего он приводится к виду:

P(x) = ((…(…(((a0 ) x + a1) x+ a2 ) x + … +ak )x + …+ an-3 )x + an-2) x + an-1) x + an

При такой форме представления полинома для вычисления его значения при конкретном значении x можно, начав с самой внутренней пары скобок, задать

p 0 = a 0,

а далее в результате повторения однотипных действий последовательно вычислять

p 1 = p 0 x  + a 1

p 2 = p 1 x  + a 2

pk = pk-1x  + ak

pn = pn -1 x  + an

Значение pn будет значением полинома при конкретном значении x. Такой прием позволяет избежать трудоемких операций по возведению х в разные степени.В общем виде такой вычислительный процесс можно записать как рекуррентную зависимость:

p 0 = a 0 

pk = pk-1x  + ak,  k = 1,2, …, n

Тогда для задания и хранения коэффициентов полинома удобно использовать массив (указывая 0 для коэффициентов при отсутствующих степенях, например, при степени 1 в условии данной задачи), причем удобнее, если его элементы будут иметь индексы от 0 до n, если это позволяет язык программирования, на котором реализуется алгоритм. Для полинома, заданного в условии данной задачи, , степеньполинома n=4, а коэффициенты имеют значения 2, 3, -1, 0 и 5, следовательно, элементы массива а от a[0] до a [4] должны иметь перечисленные значения. Для вычисления собственно значения полинома можно использовать единственную переменную p, так как вычисляемое на каждом шаге значение pk зависит только от предыдущего значения pk -1, очередного коэффициента полинома ak и заданного значения x.

Структурированная запись алгоритма 29

1. n = 4

2. Создать массив коэффициентов полинома a из n + 1 элементов, проиндексированный от 0 до n, и инициализировать его значениями согласно заданию.

3. Ввести значение x

4. p = a[0]

5. Повторить для k от 1 до n:

5.1.  p = p * x + a[k]

6. Вывести сообщение «Значение полинома при заданном x равно:» и значение p

Схема алгоритма

Текст программы на языке Си

#include <stdio.h>

#include <stdlib.h>

#define n 4

double a[n+1]={2.0, 3, -1.0, 0, 5.0};

int main(int argc, char *argv[])

{

int k;

double p, x;

printf("Введите значение параметра x: ");

scanf("%lf",&x);

p=a[0];

for(k=1;k<=n;k++)

p = p*x + a[k]);

printf("Значение полинома P(%lg) = %lg ",x,p);

system("pause");  

return 0;

}

Текст программы на языке Паскаль

Program Pr_29;

Const

n = 4;

a: array [0..n] of real = (2, 3, -1, 0, 5);

Var

x, p: real;

k: integer;

begin

writeln(ʹВведите х’);

readln(x);

p:=a[0];

for k:=1 to n do

p:=p*x+a[k];

writeln(ʹЗначение полинома = ’, p:5:2)

end.



Поделиться:


Последнее изменение этой страницы: 2021-04-12; просмотров: 132; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.219.189.247 (0.007 с.)