- •Цель работы.
- •Основная итерационная формула методов:
- •Испытания методов.
- •2.1. Градиентный метод с постоянным шагом
- •Результаты проведения метода
- •2.2. Градиентный метод с дроблением шага
- •Испытание метода
- •2.3. Градиентный метод с убыванием шага как 1/k Испытание метода
- •2.4 Метод наискорейшего спуска
- •Испытание метода
- •2.5. Метод Ньютона-Рафсона Описание метода
- •Испытание метода
- •2.6. Алгоритм Полака-Ривьера
- •Испытание метода
- •2.7. Алгоритм Давидона-Флетчера-Пауэлла Испытание метода
- •2.8. Алгоритм Бройдена-Флетчера-Шанно Испытание метода
Цель работы.
Исследовать методы безусловной оптимизации:
градиентный с постоянным шагом
градиентный с дроблением шага
градиентный с убыванием шага как 1/k
наискорейшего спуска
метод Ньютона-Рафсона
алгоритм Полака-Ривьера
алгоритм Давидона-Флетчера-Пауэлла
алгоритм Бройдена-Флетчера-Шанно
Основная итерационная формула методов:
,
где – вектор, определяющий направление изменения;
–длина шага (скаляр)
Исследование проводится на примере целевой функции
– для следующих значений параметра а:
а=0.1; а=1; а=10
– при разных начальных точках x0:
(3 , 8) (2 , 5) (4 , 23)
Минимум этой функции находится в точке x* = (1,1), причем f(x*) = 0
Для каждого метода и каждого набора исходных данных (a, x0) производится 20 шагов поиска минимума. При этом в таблице фиксируются данные последнего шага:
значения xk, f(xk).
Если на двадцатом шаге минимум функции не достигнут (т.е. ||xk - x*|| > = 10-3), то фиксируется также и номер шага k*, на котором минимум будет найден.
В каждом методе фиксируется ход итерационного процесса для одного набора исходных данных.
Испытания методов.
2.1. Градиентный метод с постоянным шагом
Описание метода
В качестве взят вектор, определяющий направление наибольшего убывания функцииf в точке, т.е. антиградиент: ,
а шаг не зависит отk (т.е постоянный)
Результаты проведения метода
x0 |
(3 , 8) |
(2 , 5) |
(4 , 23) | ||||||
a |
0.1 |
1 |
10 |
0.1 |
1 |
10 |
0.1 |
1 |
10 |
f(x0) |
1.4 |
5 |
41 |
1.1 |
2 |
11 |
49.9 |
58 |
139 |
t |
0.02 |
0.02 |
0.02 |
0.02 |
0.02 |
0.05 |
0.01 |
0.01 |
0.01 |
x20 |
(2.8233, 8.00235) |
(2.735,7.7873) |
(1.9363, 6.0530) |
(2.2135, 4.9258) |
(2.1226, 4.7566) |
(1.4650, 3.6349) |
(4.7637, 22.8641) |
(4.7198, 22.7320) |
(4.2045, 21.4373) |
f(x20) |
0.33342 |
3.1045 |
14.0741 |
0.14795 |
1.3233 |
4.37866 |
1.4457 |
14.0443 |
116.8221 |
k* |
≈15000 |
≈1600 |
≈350 |
≈12500 |
≈1300 |
≈200 |
>30000 |
≈5500 |
≈800 |
Итерационный процесс для x0 = (3,8), a = 0,1:
№ x1 x2 f(x1,x2) 1 2.752000 8.040000 0.5245689180 3 2.820250 8.024861 0.3363792370 5 2.825934 8.021268 0.3346541910 7 2.826112 8.018652 0.3344761127 9 2.825733 8.016134 0.3343140123 11 2.825296 8.013627 0.3341521075 13 2.824854 8.011121 0.3339902338 15 2.824411 8.008616 0.3338283895 17 2.823968 8.006111 0.3336665745 19 2.823525 8.003605 0.3335047889 20 2.823304 8.002353 0.3334239072 |
№ x1 x2 f(x1,x2) 1 2.752000 8.040000 0.5245689180 1001 2.602827 6.804404 0.2577872652 2001 2.372235 5.655193 0.1890698706 3001 2.137669 4.594860 0.1300657002 4001 1.903116 3.644053 0.0820548037 5001 1.675942 2.827306 0.0460329091 6001 1.468024 2.169391 0.0221090342 7001 1.294526 1.685710 0.0087728135 8001 1.167412 1.368923 0.0028395549 9001 1.087097 1.185096 0.0007695840 10001 1.042588 1.088656 0.0001841507 11001 1.020082 1.041365 0.0000409646 12001 1.009293 1.019043 0.0000087737 13001 1.004261 1.008711 0.0000018449 14001 1.001946 1.003973 0.0000003846 15000 1.000887 1.001811 0.0000000800 |