Метод золотого сечения на Java

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

Метод золотого сечения – это итеративный метод поиска экстремумов (минимума или максимума) функции одной переменной на заданном отрезке [a; b]. Метод золотого сечения был продемонстрирован в 1953 году Джеком Кифером. В его основе лежит принцип деления отрезка в пропорции золотого сечения.

Теоретические сведения

Пусть задана функция f(x) и отрезок [a; b], на котором требуется найти экстремум. Рассматриваемый отрезок делится в оба направления точками x1 и x2 в отношении золотого сечения. То есть:

Деление отрезка в пропорции золотого сечения - vscode.ru

φ – это пропорция золотого сечения.

Следовательно координаты x1 и x2 находятся по формулам:

Нахождение координат x1 и x2 при делении отрезка в пропорции золотого сечения - vscode.ru

Метод золотого сечения. Деление отрезка - vscode.ru

Таким образом точки x1 и x2 делят отрезки [a; x2] и [x1; b] соответственно в пропорции золотого сечения. Это свойство далее будет использоваться для построения итеративного процесса вычисления экстремума функции.

Описание алгоритма

  1. Задаются начальные параметры: границы отрезка [a; b] и точность вычислений ε.
  2. Рассчитываются координаты точек деления: Метод золотого сечения - vscode.ru. Затем вычисляется значение функции f(x) в этих точках: Значение функции в точках x1, x2. ЕСЛИ y1y2GS1 (случай поиска минимума функции. Для поиска точки максимума изменить неравенство на y1y2GS2), ТО ax1GS. ИНАЧЕ bx2GS.
  3. ЕСЛИ требуемая точность достигнута: accuracyGS, ТО xGS и конец алгоритма. ИНАЧЕ возврат к шагу 2.

Реализация алгоритма

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

Класс GoldenSection, позволяющий выполнить поиск экстремума функции на отрезке [a; b] с точностью ε, содержит (по порядку): определение константы пропорции золотого сечения φ, метод, вычисляющий значение целевой функции f(x), метод, выполняющий поиск минимума функции и метод, выполняющий поиск максимума функции.

Пример. Выполним поиск минимума и максимума функции Функция f(x) для поиска экстремумов методом золотого сечения - vscode.ru на отрезках [-2; 2] и [-8; 0] соответственно. Вычисления будем производить с точностью ε = 0.001.

График функции f(x):

Метод золотого сечения. График f(x) - vscode.ru

Результат работы программы:

Метод золотого сечения. Демонстрация работы программы - vscode.ru

Для того чтобы скачать исходник программы, написанной в NetBeans, нажмите на кнопку:

Скачать исходник

 

 

Метод золотого сечения на Java
5 (100%) 2 votes

Поделиться в соц. сетях:

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

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

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">