Академический Документы
Профессиональный Документы
Культура Документы
Serebrennikov Alexandr SM7-33B 1 Versia 2Dz
Serebrennikov Alexandr SM7-33B 1 Versia 2Dz
Федерации
Федеральное государственное бюджетное образовательное
учреждение
высшего образования
«Московский государственный технический университет
имени Н.Э. Баумана
(национальный исследовательский университет)»
(МГТУ им. Н.Э. Баумана)
Домашнее задание №2
Вариант 19
Москва, 2023 г.
Оглавление
Условие ...................................................................................................................................................3
Аналитическое решение .......................................................................................................................4
Функция и её график ..............................................................................................................................5
Вспомогательные функции ...................................................................................................................6
Метод наискорейшего спуска ...............................................................................................................8
Градиентный метод с дроблением шага ...........................................................................................11
Метод Сопряженных градиентов .......................................................................................................14
Метод Ньютона ......................................................................................................................................5
Квазиньютоновский метод Давидона-Флетчера-Пауэлла .................................................................6
Метод циклического покоординатного спуска .................................................................................23
Условие
Дана квадратичная функция двух переменных. Найти точку минимума этой функции и
её минимальное значение.
1. Решить данную задачу аналитически – получить точное решение. Доказать, что
найденная точка действительно является точкой минимума (см «ЛА и ФНП»).
2. Решить численно задачу безусловной минимизации квадратичной функции с
заданными начальной точкой и двумя вариантами параметров точности поиска.
Данную задачу решить следующими методами (которые мы успеем пройти):
2.1.методом наискорейшего спуска;
2.2.градиентным методом с дроблением шага;
2.3.методом сопряженных градиентов;
2.4.методом Ньютона;
2.5.квазиньютоновским методом Давидона-Флетчера-Пауэлла (ДФП);
2.6.методом прямого поиска: циклическим покоординатным спуском.
Для каждого метода построить траекторию последовательности точек (нанести точки
релаксационной последовательности на плоскость с указанными линиями уровня),
указать количество проведенных итераций для каждого метода и эквивалентное
количество вычисленных значений целевой функции (считать, что вычисление одного
антиградиента эквивалентно вычислениям значений целевой функции, а вычисление
матрицы Гессе – вычислений значений целевой функции, где – размерность линейного
пространства). Сравнить решения, полученные различными методами. Сравнить эти
решения с точным решением задачи. Работа должна заканчиваться выводами. Все
требования к оформлению, сформулированные в условии домашнего задания №1,
действуют и для этого домашнего задания.
Аналитическое решение
𝑓(𝑥, 𝑦) = 5 ⋅ 𝑥 2 + 4 ⋅ 𝑥 ⋅ 𝑦 + 2 ⋅ 𝑦 2 + 4 ⋅ √5 ⋅ (𝑥 + 𝑦) + 51
, ,
Матрица А по критерию Сильвестра положительно определенная:
Угловые миноры: 𝛿1 = 5 > 0, 𝛿2 = 6 > 0
function func(x)
return F
end
t = (sqrt(5) + 1)/2
x1 = (right*(t - 1) + left)/t
x2 = (left*(t - 1) + right)/t
F1 = F(x1)
F2 = F(x2)
n_value = 2
if F1 < F2
right = x2
x2 = x1
F2 = F1
F1 = F(x1)
else
left = x1
x1 = x2
x2 = (left*(t - 1) + right)/t
F1 = F2
F2 = F(x2)
end
n_value+=1
end
end
Функция градиента:
function grad(x)
end
Метод наискорейшего спуска
Код функции метода FastestDescent:
function FastestDescent(X0, Y0, epsillon)
n_value += n
Grad = grad(x_k)
NGrad = Grad/norm(Grad)
Nw = -NGrad
x_1 = x_k
n_iter += 1
n_value += 2
end
print(n_iter,"\t", n_value)
return x_1
end
Табл.1 Полученные результаты минимизации функции методом наискорейшего спуска
w = -Grad # антиградиент
step0, n = minimize(m -> func(x_1 + m*w), -200, 200, epsillon) # начальный шаг находим с
помощью минимизации f(x + m*w)
n_value += n
step = step0
k = 0.5 # шаг дробления
f = func(x_1)
Grad = grad(x_k)
w = -Grad
f_k = func(x_k)
n_value+=3
x_1 = x_k
f = f_k
n_iter+=1
end
print(n_iter, n_value)
return x_1
end
w = -Grad # антиградиент
k = (transpose(w)*w)/(transpose(step)*(Q'step))
Grad = grad(x_k)
w_k = -Grad
n_value += 2
w = w_k
x_1 = x_k
n_iter+=1
end
print(n_iter,"\t", n_value)
return x_1
end
Табл.3 Полученные результаты минимизации функции методом сопряженных градиентов
w = -Grad # антиградиент
Grad = grad(x_k)
w = -Grad
H = ges(x_k)
x_1 = x_k
n_value += 2 + 2^3/2
n_iter += 1
end
return x_1
end
Табл.4 Полученные результаты минимизации функции методом Ньютона
Вывод:
Метод Ньютона позволил найти минимум заданной функции с такой же высокой
точностью, как и метод сопряженных градиентов. Помимо этого, поиск занял всего
одну итерацию при обеих значения точности. Количество вычисленных значений
эквивалентно методу сопряженных градиентов. Однако стоит отметить, что метод
Ньютона имеет свои недостатки. В частности, для его работы необходимо вычислять и
обращать матрицу Гессе на каждой итерации, что может быть дорогостоящей
операцией. Тем не менее, благодаря своей скорости, метод Ньютона оказывается
одним из самых быстрых для поиска минимума целевой функции. Важно отметить, что
метод Ньютона не является универсальным и может иметь проблемы со сходимостью
в некоторых случаях. В частности, его сходимость зависит от выбора начальной
точки.
Квазиньютоновский метод Давидона-Флетчера-Пауэлла
Код функции DFP:
function DFP(X0, Y0, epsillon)
w = -Grad # антиградиент
I = [1 0; 0 1] # единичная матрица
n_value += 2
I_k = I - dI
w = w_k
x_1 = x_k
I = I_k
n_iter += 1
end
print(n_iter,"\t", n_value)
return x_1
end
Табл.5 Полученные результаты минимизации функции методом сопряженных градиентов
x_k = x_1
w = -Grad # антиградиент
Grad = grad(x_k)
x_1 = x_k
n_iter += 1
end
return x_1
end
Вывод:
Метод циклического покоординатного спуска не приводит к значительному
улучшению стоимости и точности вычислений, его скорость сходимости оставляет
также не высока. Однако, данный метод является эффективным в случае, когда
минимизируемая функция представляет собой сумму функций, каждая из которых
зависит только от одной координаты. Главным преимуществом метода является
простота его реализации.