Чем различается отделение корней и уточнение корней
Перейти к содержимому

Чем различается отделение корней и уточнение корней

  • автор:

Решение нелинейных уравнений

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

Любое уравнение можно представить в виде f (x) = 0 , перенеся всё в одну сторону, тогда поиск корней уравнения сводится к поиску точек пересечения функции f (x) с осью абсцисс. Для более удобной реализации методов в языке Паскаль целесообразно сразу описать функцию f (x) как подпрограмму:

function F(x:real):real;

begin

F:= . ;

end;

Существует ряд методов численного решения нелинейных уравнений, целесообразность применения каждого из которых определяется видом уравнения, его порядком, требуемой точностью и т. д. Эти методы подробно рассмотрены в [1,2,5].

Метод отделения корней

Итак, дано уравнение ƒ(x) = 0, где ƒ(x) – непрерывная функция. Поиск корней уравнения сводится к поиску точек пересечения функции ƒ(x ) с осью абсцисс. Все рассматриваемые ниже методы подразумевают, что уже найден отрезок [a,b], в котором существует один корень уравнения. В зависимости от вида функции таких отрезков может быть несколько, а для периодических функций – бесконечное множество. Метод отделения корней осуществляет поиск таких отрезков.

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

Если есть такая таблица значений функции, то график функции можно и не строить. Достаточно найти две строчки, где значение функции меняет знак на противоположный. Такой способ называется табличным методом отделения корней (см. пример).

Рис. 1. Графическая интерпретация метода отделения корней

Пример. 4.1. Реализация табличного метода отделения корней.

Здесь x пробегает значения от xn до xk с шагом h и при этом на экран выводятся значения x и f(x). Отрезок [xn, xk] и шаг h нужно подбирать для каждой функции, исходя из её характера. Шаг должен быть меньше, чем расстояние между корнями уравнения, чтобы исключить попадание в шаг двух корней.

program tablica;

var xn,xk,x,h:real;

function F(x:real):real;

begin F:=sqrt(x)+2*sqr(x)+3*x; end;

begin

write(‘Введите начало интервала > ’); readln(xn);

write(‘Введите конец интервала > ’); readln(xk);

write(‘Введите шаг > ’); readln ( h );

x:=xn;

begin

writeln(‘x=’,x,‘ f(x)=’,f(x));

x:=x+h;

end;

end.

Процесс выбора отрезка [a,b], содержащего корень, можно автоматизировать. Для этого нужно, начиная с какого-то начального значения, смещать отрезок длиной h в цикле и каждый раз анализировать значения функции на концах этого отрезка. Корень присутствует, если эти значения разного знака. Можно использовать сложное условие
(f(a)>0 AND f(b)<0) OR (f(a) AND f(b)>0),

а можно просто найти произведение и проверить его знак. Корень присутствует, если f(a)*f(b) . После этого можно уточнять значение корня, а можно перейти к поиску следующего отрезка, задав начало поиска от конца найденного.

Пример. 4.2. Поиск ближайшего отрезка, содержащего корень.

program poisk;

var a,b,h:real;

function F(x:real):real;

begin F:=sqrt(x)+2*sqr(x)+3*x; end;

begin

write(‘Введите начало поиска > ’); readln(b);

write(‘Введите шаг > ’); readln ( h );

repeat

a:=b;

b:=a+h;

writeln(‘a=’,a,‘ b=’,b);

end.

Метод половинного деления

Пусть дано уравнение ƒ(x) = 0, где ƒ ( x ) – непрерывная функция, корень Р отделен на отрезке [a,b], т. е. ƒ(a) × ƒ(b) > 0, причем | ba | < E. Требуется найти значение корня Р с точностью до Е (см. рис. 2).

Если корень Р не отделен на заданном отрезке, т. е. ƒ (a) и ƒ (b) одного знака и, следовательно, ƒ (a) × ƒ b) > 0, то вычисляются значения функции в точках, расположенных через равные интервалы на оси Х. Когда ƒ (an) и ƒ (bn) имеют противоположные знаки, то значения a = an и b=bn принимаются в качестве начальных и находят середину отрезка [a,b], т. е. с=(a+b)/2. Тогда отрезок [a,b] точкой с разделится на два равных отрезка [a,c] и [c,b], длина которых равна (ba)/2. Из двух этих образовавшихся отрезков выбирается тот, на концах которого функция ƒ (x) принимает значения противоположных знаков; обозначим его [a1,b1]. Затем отрезок [a1,b1] делим пополам и проводим те же действия. Получим отрезок [a2,b2], длина которого равна (ba)/2 2 . Процесс деления отрезка пополам производится до тех пор, когда на каком-то k-м этапе будет получен отрезок [ak,bk], такой, что

bk ak = (ba)/2 k ≤ E и ak P bk ,

где число k указывает на количество проведенных делений. Числа ak и bk – корни уравнения ƒ (x) = 0 с точностью до E. За приближенное значение корня следует взять Р=(ak+bk)/2, причем погрешность не превысит (ba)/2 k+ 1 .

Рис. 2. Графическая интерпретация метода половинного деления

Отметим, что в качестве условия прекращения счета более целесообразно пользоваться условием E ≤ I bk ak I .

Блок-схема алгоритма представлена на рис. 3.

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

На блок-схеме видно два цикла. Первый реализует поиск отрезка [a,b] длиной h, на котором есть корень уравнения. Второй цикл уменьшает этот отрезок методом половинного деления до тех пор, пока его длина не станет меньше заданной погрешности е. Удобнее всего для организации циклов применить оператор repeat … until. Внутри второго цикла размещён условный оператор, который проверяет, с какой стороны нужно уменьшить отрезок [a,b].

Рис. 3. Блок-схема алгоритма метода половинного деления

Метод касательных

Расчетная формула метода касательных (или метод Ньютона-Рафсона) получается из разложения функции ƒ(x) = 0 в ряд Тейлора в окрестности точки xn. При ограничении разложения двумя членами ряда получим

Здесь O (от английского order) означает порядок остаточного члена в разложении, который в дальнейшем считается малым.

Обычно окончательная формула записывается в виде

Таким образом, зная какое-либо предыдущее приближение xn, где n – номер приближения или итерации (n ≥ 0), можно определить последующее приближенное значение корня xn+1. Если заданное (xn) и расчетное (xn+1) значения совпадают с точностью ε, т. е.

то значение xn+1 считается приближенным значением корня уравнения ƒ (x) = 0.

Кроме предыдущего условия окончания счета, можно использовать условие малости функций ƒ (x) около корня, т. е. | ƒ (xn)| ≤ εf или | ƒ (xn+1) | ≤ εf , где εf – заданная погрешность.

Рассмотрим геометрическое толкование метода касательных (см. рис. 4), где значение корня Р определяется следующим образом.

Рис. 4. Графическая интерпретация метода касательных

Исходя из некоторого начального приближения xn, находим соответствующее ему значение ƒ (xn) (точка А), проводим касательную к кривой ƒ (x) через точку А и ищем точку пересечения этой касательной с осью Х. Эта точка будет значением xn+1, т. к. требовалось провести через точку с координатами xn, ¦(xn) прямую с угловым коэффициентом ƒ ‘(xn) и затем найти её пересечение с осью Х.

Величина отрезка (xn – xn+1) больше заданной погрешности e, поэтому поиск значения корня продолжается аналогично. Принимая последнее найденное значение xn+1 за исходное, определяем следующее значение xn+2 по той же формуле

далее опять проверяется условие

Повторение поиска следующей точки продолжается до тех пор, пока не выполнится условие окончания поиска приближенного значения корня.

Для составления программ можно руководствоваться блок-схемой, представленной на рис. 5.

Рис. 4.5. Блок-схема алгоритма метода касательных

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

Замечание. При реализации этого метода целесообразно функцию ¦(x) и её производную ¦ ‘ (x) описать как подпрограммы:

function F(x:real):real;

begin F:= . ; end;

function F1(x:real):real;

begin F1:= . ; end;

При этом функция должна быть предварительно продифференцирована вручную.

Основной цикл удобнее всего организовать при помощи оператора repeat … until.

Метод касательных обладает относительно большой скоростью сходимости при выполнении следующих условий:

  1. Начальное приближение x0 выбрано достаточно близко к корню уравнения ƒ (x) = 0.
  2. Вторая производная ƒ «(x) не принимает больших значений.
  3. Первая производная ƒ ‘ (x) не слишком близка к нулю.

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

Модифицированный метод Ньютона

Модифицированный метод Ньютона лишь немного отличается от метода касательных и обладает меньшей скоростью сходимости. Здесь значение производной вычисляется всего один раз в точке первого приближения и больше не изменяется. Следовательно, её вычисление будет стоять до оператора цикла. Общая формула вычисления последующего приближения будет выглядеть так:

Тема 2. Методы решения нелинейных уравнений

Одной из важнейших и наиболее распространенных задач математического анализа является задача определения корней уравнения с одним неизвестным, которое в общем виде можно представить как f(x) = 0. В зависимости от вида функции f(x) различают алгебраические и трансцендентные уравнения. Алгебраическими уравнениями называются уравнения, в которых значение функции f(x) представляет собой полином n-й степени:

Всякое неалгебраическое уравнение называется трансцендентным уравнением. Функция f(x) в таких уравнениях представляет собой хотя бы одну из следующих функций: показательную, логарифмическую, тригонометрическую или обратную тригонометрическую.

Решением уравнения f(x)=0 называется совокупность корней, то есть такие значения независимой переменной , при которых уравнение обращается в тождество . Однако, точные значения корней могут быть найдены аналитически только для некоторых типов уравнений. В частности, формулы, выражающие решение алгебраического уравнения, могут быть получены лишь для уравнений не выше четвертой степени. Еще меньше возможностей при получении точного решения трансцендентных уравнений. Следует отметить, что задача нахождения точных значений корней не всегда корректна. Так, если коэффициенты уравнения являются приближенными числами, точность вычисленных значений корней заведомо не может превышать точности исходных данных. Эти обстоятельства заставляют рассматривать возможность отыскания корней уравнения с ограниченной точностью (приближенных корней).

Задача нахождения корня уравнения с заданной точностью ( >0) считается решенной, если вычислено приближенное значение , которое отличается от точного значения корня не более чем на значение e

Процесс нахождения приближенного корня уравнения состоит из двух этапов:

Отделение корней (локализация корней);

Итерационное уточнение корней.

На этапе отделения корней решается задача отыскания возможно более узких отрезков , в которых содержится один и только один корень уравнения.

Этап уточнения корня имеет своей целью вычисление приближенного значения корня с заданной точностью. При этом применяются итерационные методы вычисления последовательных приближений к корню: x0, x1, . xn, …, в которых каждое последующее приближение xn+1 вычисляется на основании предыдущего xn. Каждый шаг называется итерацией. Если последовательность x0, x1, . xn, … при n ® ¥ имеет предел, равный значению корня , то говорят, что итерационный процесс сходится.

Существуют различные способы отделения и уточнения корней, которые мы рассмотрим ниже.

2.2. Отделение корней

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

X Международная студенческая научная конференция Студенческий научный форум — 2018

ОТДЕЛЕНИЯ КОРНЕЙ. УТОЧНЕНИЕ КОРНЕЙ МЕТОДОМ ПОЛОВИННОГО ДЕЛЕНИЯ (МЕТОД ДИХОТОМИИ)

Космакова О.С. 1 , Васютин А.А. 1
1 Донской Государственный Технический Университет (ДГТУ)
Работа в формате PDF

Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке «Файлы работы» в формате PDF

В общем случае редко удается точно найти все корни нелинейных уравнений, а если к тому же коэффициенты в уравнении даны с погрешностью, то вопрос о точном определении корней вообще теряет всякий смысл. Однако если предположить, что задано уравнение типа (1), то тогда без ограничения общности можно утверждать, что F(х) имеет корни, для которых существует δ-окрестность, содержащая только один простой корень. Такой корень иногда называют изолированным.

Предположим теперь, что найден отрезок [a, b] такой, что

функцияF(x) непрерывна на отрезке [a, b] вместе с производной первого порядка;

значения F(x) на концах отрезка имеют разные знаки (F(a)F(b) < 0);

первая производная F (x) сохраняет определенный знак на всем отрезке.

Условия 1) и 2) гарантируют, что на интервале [a, b] находится хотя бы один корень, а из 3) следует, что F(x) на данном интервале монотонна и поэтому корень будет единственным. Такой интервал называют интервалом изоляции искомого корня ξ.

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

Принимая во внимание, что действительные корни уравнения (1) – это точки пересечения графика функции F(x) с осью абсцисс, достаточно построить график функции F(x) и отметить точки пересечения F(x)с осью Ох, или отметить на оси Ох отрезки, содержащие по одному корню. Построение графиков часто удается сильно упростить, заменив исходное уравнение (1) равносильным ему уравнением:

где функцииF1(x) и F2(x) – более простые, чем исходная функцияF(x). Тогда, построив графики функций у =F1(x) и у = F2(x), искомые корни получим как абсциссы точек пересечения этих графиков.

Пример 1. Графически отделить корни уравнения

Решение. Уравнение (3) перепишем в виде равенства lg x=.

Отсюда ясно, что корни уравнения (3) могут быть найдены как абсциссы точек пересечения логарифмической кривой y = lg x и гиперболы y = . Построив эти кривые (см. рис. 1), приближенно найдем единственный корень уравнения (3) или определим его содержащий отрезок [2, 3].

Рис. 1 – Графическое отделение корней (пример 1)

Убедимся, что отрезок [2, 3] содержит один и только один корень уравнения (3).

Перепишем уравнение в виде F(x) = 0, где .

Тогда F(2) = 2 . lg(2) – 1 = 2 . 0.30103 – 1 = 0.60206 – 1 = – 0.39794 0, т.е. на концах отрезка функция F(x) принимает значения разных знаков.

Найдем первую производную функции:

Следовательно, первая производная сохраняют свой знак на отрезке, а на концах отрезка функция F(x) принимает значения разных знаков, значит отрезок [2, 3] – отрезок изоляции искомого корня ξ.

Другим, не менее распространенным методом отделения корней является метод производных. Этот метод основан на том, что между любыми двумя нулями функции содержится, по крайней мере, один нуль ее производной. Отсюда следует, что нули функции естественно искать на интервалах, порождаемых нулями производной. Метод заключается в том, что ищут и приравнивают к нулю производную функции F'(х), а затем на отрезках определяют знак функции F(х), где хi корни уравнения F'(х)= 0. Таким образом, всю числовую ось разбивают на интервалы. Отметим, что описанный метод называют еще методом экстремумов функции.

Пример 2. Отделить методом производных корни уравнения:

Решение. Найдем производную F'(х) и приравняем ее нулю.

Составим приблизительную схему знаков функции F(х):

Следовательно, уравнение (4) имеет три действительных корня, лежащих в интервалах (– ∞, –2), (–2, 0) и (0, + ∞). Возьмем для пробы три дополнительные точки х = – 3, х = – 1, х = 1 и составим следующую схему знаков F(x):

Если исследуемая функция есть полином n-й степени, то используют метод удаления корней: определяют один корень, и функцию F(х) представляют в виде F(х)= g1(х) . (хх1), где x1 первый найденный корень, а g1(х)– полином степени (n – 1).Затем проверяют, является ли х1корнем полинома g1(x). Если корень имеет кратность, большую единицы, то записывают многочлен в виде F(х)= g2(х) . (хх1) 2 . После конечного числа шагов получают представление F(х)= (хх1) k gk(х) и переходят к определению следующего корня при помощи gk(х). В результате получают представление

Чтобы погрешность с каждым шагом не увеличивалась, а очередной корень определялся с высокой степенью точности, следует уточнение корня производить по функции F(х), а не по функции g(х). Это особенно важно, когда удалено много (больше половины) корней.

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

При заданной точности  деление пополам продолжают до тех пор, пока длина отрезка не станет меньше  . , тогда координата середины последнего найденного отрезка и есть значение корня требуемой точности.

Метод дихотомии – простой и надежный метод поиска простого корня уравнения F(х) = 0. Он сходится для любых непрерывных функций F(х), в том числе и недифференцируемых.

проблема определения отрезка, на котором функция меняет свой знак (как правило, это отдельная вычислительная задача, наиболее сложная и трудоемкая часть решения);

если корней на выделенном отрезке несколько, то нельзя заранее сказать, к какому из них сойдется процесс;

не применим к корням четной кратности;

для корней нечетной, но высокой кратности метод неустойчив, дает большие ошибки;

медленно сходится. Для достижения ε необходимо выполнить итераций, т.е. для получения 3 верных цифр (ε = 0.0005) надо выполнить около 10 итераций, если первоначальный отрезок имеет единичную длину.

Программа, по которой можно уточнить корни методом дихотомии, построена по алгоритму, приведенному ниже (см. рис. 2).

Рис. 2 Блок-схема метода дихотомии

Пример 3. Отделить корни уравнения x 2 5 . sin x = 0 и уточнить их с точностью ε = 0.00005 методом дихотомии.

Решение. Первый этап – графическое отделение корней. Графическим методом (см. рис. 3) находится отрезок, на котором расположен один из корней данного уравнения [1.8; 2.2]; (второй корень тривиальный, х = 0 находится легко).

Рис. 3 Графическое отделение корней (пример 3)

Второй этап – уточнение отделенного корня методом дихотомии до заданной точности ε. Для того чтобы уточнить корень, изолированный на отрезке [1.8; 2.2], с указанной точностью используем процедуру bisect.

Формальные параметры процедуры BISECT. Входные:A, B (тип real) – определяют длину отрезка; EPS (тип real) – определяет заданную точность вычислений; IT (тип integer) – определяет наибольшее разрешенное количество итераций (для избежания зацикливания процесса в случае неправильного определения отрезка изоляции). Выходные:X (тип real) – в нем содержится искомый корень сравнения; K (тип integer) – в него заносится количество выполненных итераций; FLAG (тип integer) – определяет способ выхода из процедуры, если FLAG=1, то заданная точность вычислений EPSне достигнута за разрешенное количество итераций IT.

Перед началом работы программы определяют func(Х) – процедуру-функцию, по которой вычисляют значения F(х). Тип функции должен быть вещественным.

Паскаль-программа и результаты расчета в среде Pascal ABC приведены на рисунках 4 и 5.

Рис. 4 Паскаль-программа уточнения корня методом дихотомии

Рис. 5 Результаты уточнения корня методом дихотомии в среде PascalABC

Вариант алгоритма метода дихотомии может быть реализован в среде математического пакета Mathcad (см. рис. 6). Достоинством пакета является возможность графического отделения корней и оценка значений первой и второй производных на интервале изоляции.

Рис. 6 Результаты решения в среде пакета Mathcad

Методы дихотомии

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

  1. Задать начальный интервал ;
  2. Убедиться, что на концах функция имеет разный знак;
  3. Повторять
    • выбрать внутри интервала точку ;
    • сравнить знак функции в точке со знаком функции в одном из концов;
      • если совпадает, то переместить этот конец интервала в точку ,
      • иначе переместить в точку другой конец интервала;

Варианты метода дихотомии различаются выбором точки деления. Рассмотрим варианты дихотомии: метод половинного деления и метод хорд.

Метод половинного деления

Метод половинного деления известен также как метод бисекции. В данном методе интервал делится ровно пополам.

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

Метод половинного деления:

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

Метод половинного деления как метод поиска корней функции

Изложение метода

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

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

Пусть функция непрерывна на отрезке ,

и — единственный корень уравнения .

(Мы не рассматриваем случай, когда корней на отрезке несколько, то есть более одного. В качестве можно взять и другое достаточно малое положительное число, например, .)

Поделим отрезок пополам. Получим точку и два отрезка .

  • Если , то корень найден ().
  • Если нет, то из двух полученных отрезков и надо выбрать один такой, что , то есть
    • , если или
    • , если .

    Для того, чтобы найти приближённое значение корня с точностью до , необходимо остановить процесс половинного деления на таком шаге , на котором и вычислить . Тогда можно взять .

    Реализация метода на С++ и числовой пример

    Решим уравнение методом половинного деления. Графическим методом находим отрезок , которому принадлежит искомый корень. Так как , то принимаем .

    Ниже приведен пример программы на Си++, которая решает поставленную задачу.

    Программа 1. Корень уравнения

    #include #include using namespace std; const double epsilon = 1e-2; double f(double x) { return 4- exp(x) - 2*x^2; } int main() { double a, b, c; a = 0; b = 2; while (b - a > epsilon){ c = (a + b) / 2; if(f(b) * f(c)  0) a = c; else b = c; } cout  <(a + b) / 2  return 0; }

    Искомый корень . Вычисления проводились с точностью .

    Промежуточные вычисления представлены в таблице ниже.

    n an bn cn bn-cn
    1 0 1 0.5 0.5
    2 0.5 1 0.75 0.25
    3 0.75 1 0.875 0.125
    4 0.875 1 0.9375 0.0625
    5 0.875 0.9375 0.90625 0.03125
    6 0.875 0.90625 0.890625 0.015625
    7 0.875 0.890625 0.8828125 0.0078125

    Метод половинного деления как метод оптимизации

    Рис. 1. Поиск экстремума функции методом половинного деления
    Рис. 2. Схема алгоритма метода половинного деления

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

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

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

    Запишем словесный алгоритм метода.

    1. На каждом шаге процесса поиска делим отрезок пополам, — координата середины отрезка .
    2. Вычисляем значение функции в окрестности вычисленной точки , т.е.
      .
    3. Сравниваем и и отбрасываем одну из половинок отрезка (рис. 1).
      • При поиске минимума:
        • Если , то отбрасываем отрезок , тогда . (рис. 1.а)
        • Иначе отбрасываем отрезок , тогда . (рис. 1.б)
      • При поиске максимума:
        • Если , то отбрасываем отрезок , тогда .
        • Иначе отбрасываем отрезок , тогда .
    4. Деление отрезка продолжается, пока его длина не станет меньше заданной точности , т.е. .

    Схема алгоритма метода представлена на рис 2.

    При выводе – координата точки, в которой функция имеет минимум (или максимум), – значение функции в этой точке.

    Метод хорд

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

    Изложение метода

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

    Рис. 3. Метод хорд

    Рис. 3. Метод хорд

    При этом в процессе поиска семейство хорд может строиться:

    1. при фиксированном левом конце хорд, т.е. , тогда начальная точка (рис. 3а);
    2. при фиксированном правом конце хорд, т.е. , тогда начальная точка (рис. 3б);

    В результате итерационный процесс схождения к корню реализуется рекуррентной формулой:

    • для случая а):
    • для случая б):

    Рис. 4. Схема алгоритма уточнения корня методом хорд

    Рис. 4. Схема алгоритма уточнения корня методом хорд

    Процесс поиска продолжается до тех пор, пока не выполнится условие или .

    Метод обеспечивает быструю сходимость, если , т.е. хорды фиксируются в том конце интервала , где знаки функции и ее кривизны совпадают.

    Схема алгоритма уточнения корня методом хорд представлена на рис. 4.

    Комбинация метода хорд и метода половинного деления

    Метод хорд можно применить в качестве «последнего штриха» после того, как метод половинного деления гарантирует требуемую точность — это не улучшит существенно гарантируемой точности, но, скорее всего, на несколько порядков повысит точность решения.

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

    На вопрос о том, стоит ли использовать попеременное применение метода половинного деления и метода хорд, ответ отрицателен. После того, как метод хорд приближает одну из границ почти вплотную к корню, методу половинного деления придётся долго работать, чтобы гарантировать заданную точность, т.к. метод хорд ее гарантировать не может.

    Поэтому лучше использовать в качестве точки деления что-то среднее: если метод половинного деления предлагает использовать , а метод хорд — , то возьмем . Коэффициент .

    Чему должен быть равен коэффициент ? Его следует не задавать, а вычислять по ходу работы: если при очередной операции интервал уменьшился более чем в два раза (это то, что гарантирует метод половинного деления), то значит, нужно больше доверять методу хорд (уменьшить ), и наоборот.

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

    Список литературы

    • http://dmitrykarpov.nm.ru/misc/dihotomy.htm
    • http://mathfunc.narod.ru/met_dih.html
    • http://www.intuit.ru/department/mathematics/mathprog/9/
    • http://www.intuit.ru/department/calculate/intromathmodel/4/3.html
    • http://calc-x.com/chm/dich.php
    • http://elib.ispu.ru/library/math/sem1/kiselev1/node84.html

    См. также

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *