- •6. Лекция: Массивы
- •Общий взгляд
- •Объявление массивов
- •Объявление одномерных массивов
- •Динамические массивы
- •Многомерные массивы
- •Массивы массивов
- •Процедуры и массивы
- •Алгоритмы и задачи
- •Ввод-вывод массивов
- •Ввод-вывод массивов в Windows-приложениях
- •Организация ввода-вывода двумерных массивов
- •Элемент управления DataGridView и отображение массивов
- •Задачи (ввод, вывод и другие простые задачи с массивами)
- •Массивы и классические алгоритмы математики
- •Полиномы
- •Исследование интервала
- •Алгоритмы нахождения корня полинома
- •Метод простой итерации
- •Метод Ньютона
- •Понижение степени полинома
- •Нахождение коэффициентов полинома по его корням
- •Полином Лагранжа
- •Сложение и умножение полиномов
- •Алгоритмы линейной алгебры
- •Квадратные матрицы
- •Системы линейных уравнений
- •Алгоритм Гаусса
- •Интерполяционный полином, определитель Вандермонда и обусловленность матриц
- •6.2.10. Проект
-
Алгоритмы нахождения корня полинома
Рассмотрим
несколько простых схем нахождения корня
полинома. Заметим, что все эти схемы
применимы к нахождению корней любых
функций, а не только полиномов. Как
всегда в программировании, речь идет
не столько о точном нахождении корня,
сколько о нахождении корня с заданной
точностью
.
Так что, если
-
это точное значение корня, то нам
достаточно найти
-
такое, что
.
-
Схема дихотомии отрезка (деление пополам)
Эта
схема прекрасно подходит, когда
предварительно проведено исследование
интервала существования корня и найден
такой интервал [e, f], на концах которого
полином принимает разные знаки, так что
существует корень внутри интервала.
Если исходный интервал мал и сравним с
заданной точностью
,
то в качестве корня можно выбрать
середину этого интервала. Если же
исходный интервал больше, чем значение
,
то интервал можно разделить пополам и
из двух половинок выбрать ту, для которой
выполняется характерный признак
существования корня. Понятно, что если
признак выполняется для всего интервала,
то он обязательно будет выполняться
для одной из его половинок. Деление
отрезка пополам приводит к быстрому
уменьшению длины отрезка, так что 10-20
делений достаточно, чтобы найти интервал
длины, меньшей
,
а следовательно, и корень полинома с
заданной точностью.
-
Метод простой итерации
Формально
метод применим и в том случае, когда
неизвестен интервал, в котором существует
корень функции. Пусть
-
некоторое заданное начальное приближение
к корню полинома. Тогда можно построить
следующий итерационный процесс:
![]()
Метод
записан для произвольной функции
,
в нашем случае функция
задана
полиномом. Итерационный процесс следует
прекращать либо по достижении заданной
точности, либо по достижении максимально
допустимого числа итераций
.
Заметьте, следует задавать оба условия,
поскольку сходимость процесса простой
итерации к корню, даже если он существует,
не гарантируется. Во многом все зависит
от удачного выбора начального приближения.
Метод
простой итерации обладает полезным
свойством "неподвижной точки".
Корни функции являются "неподвижными
точками" метода. Нетрудно заметить,
что если на некотором шаге
сошлось
к корню полинома
,
то
и
все последующие итерации будут равны
,
так что итерационный процесс из найденного
корня не уходит.
-
Метод Ньютона
Этот
метод чуть более сложен в реализации,
но обладает лучшей сходимостью в
сравнении с методом простой итерации,
хотя и здесь сходимость во многом зависит
от удачного выбора начального приближения
.
Для произвольной функции
итерационный
процесс метода Ньютона выглядит так:
![]()
Понятно, что производной от полинома n-й степени будет полином степени n-1, коэффициенты которого легко вычисляются по n и коэффициентам исходного полинома. Все, что было сказано о методе простой итерации - завершение процесса, обладание неподвижной точкой, - справедливо и для метода Ньютона.
-
Понижение степени полинома
Если
для полинома
n-й
степени найден корень
,
то можно понизить степень полинома,
построив полином
степени
,
у которого все корни совпадают с корнями
полинома
за
исключением того, что у него нет корня
.
Запишем соотношение, связывающее полиномы:
![]()
Учитывая
соотношение 6.3 о равенстве двух полиномов
одной степени, можно выписать
соотношение,
связывающее коэффициенты этих полиномов.
Эти соотношения нетрудно разрешить
относительно неизвестных коэффициентов
.
В результате получим:
|
|
(6.4) |
Заметьте,
неизвестных всего
,
а уравнений можно построить -
.
Но последнее уравнение
является
следствием предыдущих и используется
для контроля вычислений.
К новому полиному можно применить тот же процесс - найти его корень и понизить затем степень полинома. Реально понижение степени не намного упрощает задачу отыскания корней, так что чаще всего проще искать корни исходного полинома, изменяя начальные приближения в итерационном процессе или отыскивая различные интервалы, на которых полином меняет свой знак.

