- •Одномерная оптимизация
- •Метод дихотомии
- •Метод золотого сечения
- •Метод Ньютона
- •Многомерная оптимизация по направлению
- •Метод дихотомии
- •Метод золотого сечения
- •Метод Ньютона
- •Листинг кода метода дихотомии
- •Тест метода дихотомии
- •Листинг кода метода золотого сечения
- •Тест метода золотого сечения
- •Листинг кода метода Ньютона
- •Тест метода Ньютона
2.Многомерная оптимизация по направлению
Дана функция f
f(x) = x12 + 6x22 + x32 + 3x1x2 6x2x3 x2x3 + x1 6x2 + x3 |
|
(3) |
|||
Необходимо найти минимум в точке |
2 1 |
6 по направлению |
1 2 |
1 . Для того, чтобы |
|
реализовать данный функционал на |
основе функции одной переменной необходимо исполь- |
||||
|
|
|
|
|
|
зовать функцию перехода g. Вид функции g представлен на рисунке 2. |
|
||||
g(t) = f(x0 + t r) |
|
|
|
|
(4) |
Рис. 2: Вид функции перехода g
Программы, составленные для функции многих переменных лишь проксируют оригинальную функцию. Далее приведены строки этой функции.
static double f(Vector x) =>
Pow(x.Get(0), 2) + V * Pow(x.Get(1), 2) + Pow(x.Get(2), 2) + 3 * x.Get(0) * ,! x.Get(1) - V * x.Get(0) * x.Get(2) - x.Get(1) * x.Get(2) + x.Get(0) - V * ,! x.Get(1) + x.Get(2);
static double g(double t) =>
Lab3Sec2(new Vector(2, 1, V) + t * new Vector(-1, 2, 1));
7
2.1.Метод дихотомии
Метод дихотомии из точки 0 с шагом 0:01 за 7 шагов нашёл область поиска и за 14 шагов нашёл минимум функции перехода g, которым является точка 5=6. При подстановке этой
точки в выражение x0 + t r получается вектор x* = |
17=6 2=3 |
31=6 ; f(x*) = 407=6 |
|||||||
|
67:8333 |
|
|
|
h = 10 4 |
фукнции оказалось больше |
|||
|
|
. При проверке точек вблизи (шаг |
|
) значение |
|
||||
минимума. |
|
|
|
|
|
|
|||
|
|
Для справки приводится последовательное уменьшение области поиска. |
|||||||
|
|
i |
Левый |
Центр |
Правый |
|
|
|
|
|
|
1 |
-0.645 |
-0.9675 |
-1.29 |
|
|
|
|
|
2 |
-0.645 |
-0.80625 |
-0.9675 |
|
|
|
|
|
|
3 |
-0.80625 |
-0.88687 |
-0.9675 |
|
|
|
|
|
|
4 |
-0.80625 |
-0.84656 |
-0.88687 |
|
|
|
|
|
|
5 |
-0.80625 |
-0.82640 |
-0.84656 |
|
|
|
|
|
|
6 |
-0.82640 |
-0.83648 |
-0.84656 |
|
|
|
|
|
|
7 |
-0.82640 |
-0.83144 |
-0.83648 |
|
|
|
|
|
|
8 |
-0.83144 |
-0.83396 |
-0.83648 |
|
|
|
|
|
|
9 |
-0.83144 |
-0.83270 |
-0.83396 |
|
|
|
|
|
|
10 |
-0.83270 |
-0.83333 |
-0.83396 |
|
|
|
|
|
|
11 |
-0.83270 |
-0.83302 |
-0.83333 |
|
|
|
|
|
|
12 |
-0.83302 |
-0.83317 |
-0.83333 |
|
|
|
|
|
|
13 |
-0.83317 |
-0.83325 |
-0.83333 |
|
|
|
|
|
|
|
14 |
-0.83325 |
-0.83329 |
-0.83333 |
|
|
|
|
8
2.2.Метод золотого сечения
Метод золотого сечения из точки 0 с шагом 0:01 за 5 шагов нашёл область поиска и за 21 шаг нашёл минимум функции перехода g, которым является точка 5=6. При подстановке
этой точки в выражение x0 +t r получается вектор x* = 17=6 2=3 31=6 |
; f(x*) = 407=6 |
|||||||
67:8333. При проверке точек |
вблизи (шаг h = 10 4) значение фукнции оказалось больше |
|||||||
минимума. |
|
|
|
|
|
|
||
|
Для справки приводится последовательное уменьшение области поиска. |
|||||||
|
i |
Левый |
Центр слева |
Центр справа |
Правый |
|
||
|
1 |
0 |
-0.46978 |
|
-0.76013 |
-1.22991 |
|
|
2 |
-0.46978 |
-0.76013 |
|
-0.93957 |
-1.22991 |
|
|
|
3 |
-0.46978 |
-0.64922 |
|
-0.76013 |
-0.93957 |
|
|
|
4 |
-0.64922 |
-0.76013 |
|
-0.82867 |
-0.93957 |
|
|
|
5 |
-0.76013 |
-0.82867 |
|
-0.87103 |
-0.93957 |
|
|
|
6 |
-0.76013 |
-0.80249 |
|
-0.82867 |
-0.87103 |
|
|
|
7 |
-0.80249 |
-0.82867 |
|
-0.84485 |
-0.87103 |
|
|
|
8 |
-0.80249 |
-0.81867 |
|
-0.82867 |
-0.84485 |
|
|
|
9 |
-0.81867 |
-0.82867 |
|
-0.83485 |
-0.84485 |
|
|
|
10 |
-0.82867 |
-0.83485 |
|
-0.83867 |
-0.84485 |
|
|
|
11 |
-0.82867 |
-0.83249 |
|
-0.83485 |
-0.83867 |
|
|
|
12 |
-0.82867 |
-0.83103 |
|
-0.83249 |
-0.83485 |
|
|
|
13 |
-0.83103 |
-0.83249 |
|
-0.83339 |
-0.83485 |
|
|
|
14 |
-0.83249 |
-0.83339 |
|
-0.83395 |
-0.83485 |
|
|
|
15 |
-0.83249 |
-0.83304 |
|
-0.83339 |
-0.83395 |
|
|
|
16 |
-0.83304 |
-0.83339 |
|
-0.83360 |
-0.83395 |
|
|
|
17 |
-0.83304 |
-0.83326 |
|
-0.83339 |
-0.83360 |
|
|
|
18 |
-0.83326 |
-0.83339 |
|
-0.83347 |
-0.83360 |
|
|
|
19 |
-0.83326 |
-0.83334 |
|
-0.83339 |
-0.83347 |
|
|
|
20 |
-0.83326 |
-0.83331 |
|
-0.83334 |
-0.83339 |
|
|
|
|
21 |
-0.83331 |
-0.83334 |
|
-0.83336 |
-0.83339 |
|
|
9
2.3.Метод Ньютона
Метод Ньютона из точки 0 с шагом 0:01 за 2 шага нашёл минимум функции перехода g, которым является точка 5=6. При подстановке этой точки в выражение x0 + t r получается
|
|
|
) |
|
|
|
||
вектор x* |
= 17=6 |
2=3 31=6 ; f(x*) = 407=6 67:8333. При проверке точек вблизи (шаг |
||||||
h = 10 4 |
|
значение фукнции оказалось больше минимума. |
||||||
|
Для справки приводится последовательное уменьшение области поиска. |
|||||||
|
i |
xi |
|
|
fi0 |
fi00 |
||
|
1 |
0 |
|
|
40 |
48 |
|
|
|
2 |
-0.83333 |
|
-4.1E-05 |
48 |
|
10