Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ANALIZ_ALGOR.doc
Скачиваний:
5
Добавлен:
21.08.2019
Размер:
2.31 Mб
Скачать

Лекция 7. Численные алгоритмы План

  1. Вычисление значений многочлена

  2. Решение системы линейных алгебраических уравнений

1. Вычисление значений многочлена

К задаче вычисления значения многочлена приводят многие задачи, Например, вычисление значений тригонометрических функций, которое осуществляется путем предварительного разложения функции в степенной ряд с последующим подсчетом усеченной суммы этого ряда (которая представляет из себя многочлен).

Общий вид многочлена:

Будем предполагать, что все коэффициенты известны и записаны в массив . Значение нужно вычислить в т. .

,

Для от 1 до

Конец цикла

Возврат

Вычислительная сложность – 3n.

Схема Горнера.

.

Для от до 0

Конец цикла

Возврат

Вычислительная сложность – 2n.

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

- 7 раз

Для того, чтобы метод предварительной обработки коэффициентов работал, нужно, чтобы многочлен был унимодальным (т.е. ), а степень многочлена на 1 меньше некоторой степени двойки ( для некоторого ). Преимущества описываемого подхода могут оказаться настолько велики, что иногда стоит добавить к многочлену слагаемые, позволяющие его применить, а затем вычесть добавленные значения из окончательного результата. Например, если мы имеем дело с многочленом 30 степени, то нужно прибавить к нему , найти разложение, а затем вычесть из каждого результата вычисления. Алгоритм все равно будет работать быстрее остальных методов.

Многочлен представляется в виде: , где . В обоих многочленах будет вдвое меньше членов, чем в . Для получения нужного результата мы вычислим по отдельности , а затем сделаем одно дополнительное умножение и два сложения. Если при этом правильно выбрать значение , то оба многочлена оказываются унимодальными, причем степень каждого из них позволяет применить к каждому из них ту же самую процедуру. Ее последовательное применение позволяет сэкономить вычисления.

Рассмотрим пример: . Определим . Поскольку степень многочлена равна 7, то . Выберем значение таким образом, чтобы оба многочлена были унимодальными: . Для нашего примера . Теперь мы хотим найти , удовлетворяющие уравнению

.

Многочлены - это частное и остаток от деления на . Деление с остатком дает:

На следующем шаге мы можем применить ту же самую процедуру к каждому из многочленов :

;

В результате:

.

Для вычисления - одно умножение. Еще одно умножение для .

Способ Умножения Сложения

Стандартный 13 7

Схема Горнера 7 7

Предварительная обработка 5 10

Способ Умножения Сложения

Стандартный 2N-1 N

Схема Горнера N N

Предварительная обработка

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]