Skip to content

Commit 07dbf2a

Browse files
committed
Last Update
1 parent 3b2fda2 commit 07dbf2a

File tree

4 files changed

+116
-70
lines changed

4 files changed

+116
-70
lines changed

lab05_07/report/parts/20-analysis.tex

+67-50
Original file line numberDiff line numberDiff line change
@@ -1,116 +1,133 @@
11
\chapter{Описание задачи}
22
\label{cha:analysis}
3-
3+
\section{Часть 1}
44
Функция для минимизации (\eqref{F:function}):
55

66
\begin{equation}
7-
y=\sinh(\frac{3x^4 - x + \sqrt{17}-3}{2}) + \sin{\frac{5^\frac{1}{3}x^3-5^\frac{1}{3}x + 1 - 2\cdot 5^\frac{1}{3}}{-x^3+x+2}}.
7+
y=4 x_{1} x_{2} + 7x_1^2 + 4x_2^2 + 6 \sqrt{5}x_1 -12\sqrt{5}x_2 + 51.
88
\label{F:function}
99
\end{equation}
1010

11-
Отрезок поиска: $x\in [0,1]$.
12-
13-
\section{Лабораторная работа \No1}
14-
В таблице \ref{tb:tab1} приведены результаты работы \b{метода поразрядного поиска}.
11+
Базовая точка: $x\in [0,-\sqrt{5}]$.
12+
13+
\section{Поиск точки минимума по теоритической формуле}
14+
Минимум функции достигается при условии:
15+
\[
16+
\left\{
17+
\begin{array}{l}
18+
\dfrac{\partial f_1}{\partial x_1} = 0 \\
19+
\dfrac{\partial f_1}{\partial x_2} = 0 \\
20+
\dfrac{\partial^2 f_1}{\partial x_1^2} > 0 \\
21+
\dfrac{\partial^2 f_1}{\partial x_2^2} > 0
22+
\end{array} \right.
23+
\]
24+
25+
\[
26+
\left\{
27+
\begin{array}{l l l}
28+
4 x_2 + 14 x_1 + 6 \sqrt{5} = 0 \\
29+
4 x_1 + 8 x_2 + 6 \sqrt{5} x_1 - 12 \sqrt{12} = 0 \\
30+
14 > 0 \\
31+
8 > 0
32+
\end{array} \right.
33+
\]
34+
35+
Таким образом:
36+
$X_{min}^T = \left( -\sqrt{5}, - 2 \sqrt{5}\right) \approx (-2.2261 ; -4.4721), f_{min}(X_{min}^T) = -24.00$
37+
38+
\subsection{Лабораторная работа \No5}
39+
В таблице \ref{tb:tab1} приведены результаты работы \b{метода минимизации по правильному симплексу}. Первоначальная длина ребра симплекса: $a=0.5$.
1540

1641
\begin{table}[!ht]
1742
\caption{Результаты работы метода}
1843
\begin{tabular}{|p{0.03\textwidth}|p{0.22\textwidth}|p{0.37\textwidth}|p{0.11\textwidth}|p{0.13\textwidth}|}
1944
\hline
20-
\No & Заданная точность & Количество вычислений функции & $x*$ & $f(x*)$\\
45+
\No & Заданная точность & Количество вычислений функции & $X$ & $f(X)$\\
2146
\hline
22-
1 & 0.01 & 15 & 0.453125 & -0.550957 \\
47+
1 & 0.01 & 33 & [-2.253903, 4.489971] & -23.997773 \\
2348
\hline
24-
2 & 0.0001 & 30 & 0.442139 & -0.551190 \\
49+
2 & 0.0001 & 60 & [-2.234568, 4.470636] & -23.999984\\
2550
\hline
26-
3 & 0.000001 & 45 & 0.442368 & -0.551190 \\
51+
3 & 0.000001 & 85 & [-2.235949, 4.472017] & -24.000000 \\
2752
\hline
2853
\end{tabular}
2954
\label{tb:tab1}
3055
\end{table}
3156

32-
\section{Лабораторная работа \No2}
33-
В таблице \ref{tb:tab2} приведены результаты работы \b{метода золотого сечения}.
57+
\subsection{Лабораторная работа \No6}
58+
В таблице \ref{tb:tab2} приведены результаты работы \b{метода минимизации по деформируемому симплексу}. Первоначальная длина ребра симплекса: $a=0.5$.
3459

3560
\begin{table}[!ht]
3661
\caption{Результаты работы метода}
3762
\begin{tabular}{|p{0.03\textwidth}|p{0.22\textwidth}|p{0.37\textwidth}|p{0.11\textwidth}|p{0.13\textwidth}|}
3863
\hline
39-
\No & Заданная точность & Количество вычислений функции & $x*$ & $f(x*)$\\
64+
\No & Заданная точность & Количество вычислений функции & $X$ & $f(X)$\\
4065
\hline
41-
1 & 0.01 & 12 & 0.442719 & -0.551187 \\
66+
1 & 0.01 & 28 & [-2.242463, 4.523270] & -23.990563 \\
4267
\hline
43-
2 & 0.0001 & 22 & 0.442357 & -0.551190 \\
68+
2 & 0.0001 &39 & [-2.234523, 4.465409]&-23.999844\\
4469
\hline
45-
3 & 0.000001 & 31 & 0.442364 & -0.551190 \\
70+
3 & 0.000001 & 58 & [-2.236333, 4.471860] & -23.999999\\
4671
\hline
4772
\end{tabular}
4873
\label{tb:tab2}
4974
\end{table}
5075

51-
\section{Лабораторная работа \No3}
52-
В таблице \ref{tb:tab3} приведены результаты работы \b{метода квадратичной интерполяции в сочетании с методом золотого сечения}. Количество итераций метода золотого сечения --- 4.
76+
\subsection{Лабораторная работа \No7}
77+
В таблице \ref{tb:tab3} приведены результаты работы \b{метода случайного поиска с возвратом}. Количество итераций --- 500.
5378

5479
\begin{table}[!ht]
5580
\caption{Результаты работы метода}
5681
\begin{tabular}{|p{0.03\textwidth}|p{0.22\textwidth}|p{0.37\textwidth}|p{0.11\textwidth}|p{0.13\textwidth}|}
5782
\hline
58-
\No & Заданная точность & Количество вычислений функции & $x*$ & $f(x*)$\\
83+
\No & Заданная точность & Количество вычислений функции & $X$ & $f(X)$\\
5984
\hline
60-
1 & 0.01 & 13 & 0.441913 & -0.551190 \\
85+
1 & 0.01 & 191 & [-2.232891, 4.473895] & -23.999895 \\
6186
\hline
62-
2 & 0.0001 & 19 & 0.442360 & -0.551190 \\
87+
2 & 0.0001 & 245 & [-2.236072, 4.472086] & -24.000000 \\
6388
\hline
64-
3 & 0.000001 & 25 & 0.442364 & -0.551190 \\
89+
3 & 0.000001 & 339 & [-2.236068, 4.472136] & -24.000000 \\
6590
\hline
6691
\end{tabular}
6792
\label{tb:tab3}
6893
\end{table}
6994

70-
\section{Лабораторная работа \No4}
71-
В таблице \ref{tb:tab4} приведены результаты работы \b{модифицированного метода Ньютона}.
7295

73-
\begin{table}[!ht]
74-
\caption{Результаты работы метода}
75-
\begin{tabular}{|p{0.03\textwidth}|p{0.22\textwidth}|p{0.37\textwidth}|p{0.11\textwidth}|p{0.13\textwidth}|}
76-
\hline
77-
\No & Заданная точность & Количество вычислений функции & $x*$ & $f(x*)$\\
78-
\hline
79-
1 & 0.01 & 12 & 0.442370 & -0.551185 \\
80-
\hline
81-
2 & 0.0001 & 15 & 0.442364 & -0.551190 \\
82-
\hline
83-
3 & 0.000001 & 18 & 0.442364 & -0.551190 \\
84-
\hline
85-
\end{tabular}
86-
\label{tb:tab4}
87-
\end{table}
88-
89-
90-
91-
\section{Сводная таблица}
96+
\subsection{Сводная таблица}
9297
В таблице представлены результаты работы рассмотренных методов для точности $0.000001$.
9398

9499
\begin{table}[!ht]
95100
\caption{Сводная таблица результатов работы методов}
96101
\begin{tabular}{|p{0.03\textwidth}|p{0.39\textwidth}|p{0.20\textwidth}|p{0.11\textwidth}|p{0.13\textwidth}|}
97102
\hline
98-
\No & Метод & Количество вычислений функции & $x*$ & $f(x*)$\\
103+
\No & Метод & Количество вычислений функции & $X$ & $f(X)$\\
99104
\hline
100-
1 & поразрядного поиска & 45 & 0.442368 & -0.551190 \\
105+
1 & правильный симплекс & 85 & [-2.235949, 4.472017] & -24.000000 \\
101106
\hline
102-
2 & золотого сечения & 31 & 0.442364 & -0.551190 \\
107+
2 & деформируемый симплекс & 58 & 0.[-2.236333, 4.471860] & -23.999999 \\
103108
\hline
104-
3 & квадратичной интерполяции в сочетании с методом золотого сечения & 25 & 0.442364 & -0.551190 \\
109+
3 & случайного поиска с возвратом & 316 & [-2.236068, 4.472136] & -24.000000 \\
105110
\hline
106-
4 & модифицированный метод Ньютона & 18 & 0.442364 & -0.551190 \\
107-
\hline
108-
5 & fminbnd & 12 & 0.442364 & -0.551190 \\
111+
5 & fminsearch & 155 & [-2.236068, 4.472136] & -24.000000 \\
109112
\hline
110113
\end{tabular}
111114
\label{tb:tab4}
112115
\end{table}
113116

117+
118+
\section{Часть 2}
119+
Функция для минимизации (\eqref{F:function2}):
120+
121+
\begin{equation}
122+
y=x_{2}^3 + 2x_1x_2 + \frac{1}{\sqrt{x_1x_2}}.
123+
\label{F:function2}
124+
\end{equation}
125+
126+
Базовая точка: $X = (3,3)$.
127+
128+
Устранение разрыва функции производится путём замены аргумента, при выполнении условия $|x_i| < \varepsilon$, на константное значение $\varepsilon$, где $\varepsilon = 1e-1$. При $x_1 \times x_2 < 0$ значение функции устанавливается равным $45$.
129+
130+
114131
%
115132
% % В начале раздела можно напомнить его цель
116133
%

lab05_07/report/rpz.pdf

14.6 KB
Binary file not shown.

lab05_07/source/launcher.m

+22-5
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,42 @@
11
clear;
2-
%clc;
2+
clc;
33

44
optimizer = optimizer();
55

66
x0 = [0.0, sqrt(5)];
7-
a = 0.4;
7+
x02 = [3.0, 3.0];
8+
a = 0.5;
9+
a2 = 0.5;
810
eps1 = 0.01;
911
eps2 = 0.0001;
1012
eps3 = 0.000001;
1113
hold on;
1214

1315
%% Первая часть
14-
optimizer.draw(-6, 2, 0, 9, 100);
16+
%optimizer.draw(-6, 2, 0, 9, 100);
1517
% использование метода минизации по правильному симплексу
1618
%optimizer.simple_simplex(x0, a, eps3);
1719

1820
% использование метода минизации по деформируемому симплексу
1921
%optimizer.downhill_simplex(x0, a, eps3);
2022

21-
%
22-
optimizer.returnrandsearch(x0, a, eps3);
23+
% использование метода минимизациии случайного поиска в возвратом
24+
%optimizer.returnrandsearch(x0, a, eps3);
2325

2426
%optimizer.fminsearch(x0, eps3);
27+
28+
%% Вторая часть
29+
optimizer.draw(-2, 5, -2, 5, 100);
30+
31+
% использование метода минизации по правильному симплексу
32+
%optimizer.simple_simplex(x02, a2, eps2);
33+
34+
% использование метода минизации по деформируемому симплексу
35+
%optimizer.downhill_simplex(x02, a2, eps2);
36+
37+
% использование метода минимизациии случайного поиска в возвратом
38+
%optimizer.returnrandsearch(x02, a2, eps2);
39+
40+
optimizer.fminsearch(x02, eps2);
41+
2542
hold off;

lab05_07/source/optimizer.m

+27-15
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
classdef optimizer < handle
22
properties (Constant = true)
33
n = 2,
4-
delay = 0.3,
4+
delay = 0.1,
55
alpha = 1,
66
betta = 0.5,
77
gamma = 2,
88
delta = 0.5,
99
point_size = 22,
1010
max_it = 500,
11-
div_val = 10
11+
div_val = 10,
12+
eps = 0.1
1213
end
1314

1415
properties
@@ -22,16 +23,29 @@
2223
function y = f(this, x)
2324
this.count = this.count + 1;
2425
% 1àÿ ôóíêöèÿ
25-
y = 4*x(1)*x(2) + 7*x(1)*x(1) + 4*x(2)*x(2) + 6*sqrt(5)*x(1) - 12*sqrt(5)*x(2) + 51;
26+
%y = 4*x(1)*x(2) + 7*x(1)*x(1) + 4*x(2)*x(2) + 6*sqrt(5)*x(1) - 12*sqrt(5)*x(2) + 51;
27+
%return;
2628
% 2àÿ ôóíêöèÿ
27-
%y = x(2)*x(2)*x(2) + 2 * x(1) * x(2) + 1 / sqrt(x(1)*x(2));
29+
if abs(x(1)) < this.eps
30+
x(1) = x(1) + sign(x(1)) * this.eps;
31+
end
32+
33+
if abs(x(2)) < this.eps
34+
x(2) = x(2) + sign(x(2)) * this.eps;
35+
end
36+
37+
if x(1) < 0 || x(2) < 0
38+
y = 500;
39+
else
40+
y = x(2)*x(2)*x(2) + 2 * x(1) * x(2) + 1 / sqrt(x(1) * x(2));
41+
end
2842
end
2943

3044
%% ñáðîñ ñ÷åñò÷èêà âûçîâà ôóíêöèè
3145
function reset(this)
3246
this.count = 0;
3347
end
34-
48+
3549
%% ïîñòðîåíèå ãðàôèêà ôóíêöèè â âèäå ñåìåéñòâà ëèíèé óðîâíÿ ìèíèìèçèðóåìûõ ôóíêöèé
3650
function draw(this, a1, b1, a2, b2, n)
3751
step1 = (b1 - a1) / n;
@@ -47,11 +61,13 @@ function draw(this, a1, b1, a2, b2, n)
4761
end
4862
end
4963

64+
figure(2);
65+
mesh(x2,x1,f);
66+
5067
figure(1);
51-
levels = -30:5:40;
68+
levels = -30:5:50;
5269
[C,h] = contour(x2, x1, f, levels);
53-
%figure(2);
54-
%surface(x2,x1,f);
70+
5571
%[C,h] = contour(x2, x1, f);
5672
set(h,'ShowText','on')
5773
%colormap cool
@@ -282,12 +298,10 @@ function draw_simplex(this, S, color)
282298

283299
end
284300

285-
function [x, y] = returnrandsearch(this, x0, a, eps)
301+
function [x, y] = rand_search(this, x0, a, eps)
286302
fprintf('==== Ìåòîä ìèíèìèçàöèè ñëó÷àéíîãî ïîèñêà ñ âîçâðàòîì ïðè íåóäà÷íîì øàãå ====\nÁàçîâàÿ òî÷êà: x0=[%f, %f]\nÒî÷íîñòü: eps=%f;\n\n', [x0(1),x0(2),eps]);
287303
this.count = 0;
288304

289-
lastpoint = x0;
290-
291305
xk = x0;
292306
l = a;
293307

@@ -336,9 +350,6 @@ function draw_simplex(this, S, color)
336350
end
337351
end
338352
end
339-
340-
341-
342353
end
343354

344355
function [r] = rand(this)
@@ -347,9 +358,10 @@ function draw_simplex(this, S, color)
347358

348359
%% èñïîëüçîâàíèå âîçìîæíîñòåé Optimization Toolbox Matlab
349360
function [resx, resf] = fminsearch(this, x0, eps)
361+
this.reset();
350362
fprintf('==== Optimization Toolbox Matlab ====\nÁàçîâàÿ òî÷êà: x0=[%f, %f]\nÒî÷íîñòü: eps=%f;\n\n', [x0(1),x0(2),eps]);
351363
[resx, resf] = fminsearch(@this.f, x0, optimset('TolX', eps));
352-
fprintf('>>>> Äîñòèãíóòà òðåáóåìàÿ òî÷íîñòü.\nÒî÷êà ìèíèìóìà: xmin=[%f, %f], fmin=%f;\nÊîë-âî âû÷èñëåíèé ôóíêöèè: count=%d.\n', [resx(1),resx(2),resf,this.count]);
364+
fprintf('>>>> Äîñòèãíóòà òðåáóåìàÿ òî÷íîñòü.\nÒî÷êà ìèíèìóìà: xmin=[%f, %f], fmin=%f;\nÊîë-âî âû÷èñëåíèé ôóíêöèè: count=%d.\n\n', [resx(1),resx(2),resf,this.count]);
353365
end
354366
end
355367
end

0 commit comments

Comments
 (0)