Алгоритм метода Хука-Дживса.
Скачать полный вариант
На начальном этапе задаются в качестве направлений поиска координатные направления. Необходимо также выбрать число для остановки алгоритма, вектор начальных шагов по каждой координате, ускоряющий множитель и начальное приближение. Положить y1=x1 и счетчики внешних и внутренних итераций равными единице. После этого необходимо перейти к шагу 1 алгоритма.
Шаг 1. Вычислить . Если f(zj)< f(yj), то шаг считается успешным. Положить yj+1=zj и перейти к шагу 2. Если f(zj)>=f(yj), то шаг считается не успешным. Необходимо вычислить . Если f(zj)<f(yj), то положить yj+1=zj, в противном случае yj+1=yj и перейти к шагу 2.
Шаг 2. Если j<n то заменить j на j+1 и вернуться к шагу 1. В том случае если j>=n провести сравнение f(yn+1) и f(xk). Если f(yn+1)<f(xk), то перейти к шагу 3, а если f(yn+1)>=f(xk), то перейти к шагу 4.
Шаг 3. Положить xk+1=yk+1, y1=xk+1+(xk+1-xk). Положить k=k+1, j=1 и перейти к шагу 1.
Шаг 4. Если , то остановится, это – решение. В противном случае заменить на . Положить y1=xk, xk+1=xk,k=k+1, j=1 и вернуться в шагу 1.