Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Задача 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 с.) |