Метод деления отрезка пополам (дихотомии)
Постановка задачи. Пусть известен отрезок [ A, B ] – отрезок локализации. На отрезке [ A, B ] найти точку минимума функции f(x) и отвечающее ей значение функции. Метод дихотомии заключается в последовательном сокращении отрезка локализации. Введём обозначение: [ A, B ] ® [ A (0) ,B (0)] – начальный отрезок. 1) На отрезке [ A, B ] выберем две симметрично расположенные точки α и β (рис.2.2): где 0 < d < (B - A)/2 d - параметр метода – его конкретная величина будет определена далее. 2) Вычислим значения f (a (0)), f (b (0)) 3) Из утверждения 2 для унимодальных функций имеем: если f (a (0)) £ f (b (0)), то Î [ A (0), b (0)]; тогда A (1 ) = A (0), B (1) = b (0); если f (a (0)) > f (b (0)), то Î [ a (0), B (0)]; тогда A (1 ) = a (0), B (1) = B (0); Получили [ A (1 ) , B (1) ] – новый отрезок локализации. 4) Далее, повторяя пункты 1) – 3), на k+1 -ом шаге на отрезке [ A (k ) ,B (k)] снова выберем две симметрично расположенные точки α;(k) и β;(k): 5) За очередное приближение к точке минимума можно выбрать: х(k) = a (k) или х(k) = b (k) 6) Обозначим D(n) = B (n) – A (n) - длина отрезка [ A (n ) ,B (n)] Тогда справедливо равенство: откуда следует: , где D = B – A - длина отрезка [ A, B ]. D(n) убывает и при n ® ¥ стремится к 2 d. Чтобы D(n) стало меньше некоторого заданного e > 0, надо выбрать параметр метода d < e/2. Тогда из соотношения | x (n)- | < D(n) следует, что значение можно найти с точностью e, если выполнять вычисления, пока не выполнится условие: D(n) £ e. Тогда * = x (n) – приближение к с точностью e. Метод дихотомии для поиска абсциссы точки, в которой целевая функция F(x) достигает своего минимума, оформим в виде процедуры DIHOTOM. Блок-схема алгоритма процедуры DIHOTOM(A,B,Eps,X0) приведена на рис.2.3. F(x) – заданная целевая функция – должна быть описана отдельно. Входные параметры: А, B – значения концов отрезка локализации [A, B]; Eps – заданная точность вычислений; Выходные параметры: X0 - приближение к искомому значению абсциссы точки минимума; DIHOTOM (A, B, Eps, X0)
Beta = (A + B)/2 + Eps/3 FA = F(Alfa) FB = F(Beta)
B = Beta A = Alfa
+ X0 = (A + B)/2 end
Рисунок 2.3 - Блок-схема алгоритма процедуры DIHOTOM
|