Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Лабораторная работа №3 — Методы одномерной минимизации

Реализация и сравнение двух методов поиска минимума функции одной переменной: равномерного поиска и метода золотого сечения.


Задача

Найти минимум функции на отрезке:

$$f(x) = x \sin x + 2 \cos x, \quad x \in [-5,\ -4]$$

при точностях $\varepsilon \in {0.1,\ 0.01,\ 0.001}$.


График функции

График унимодальности

Функция унимодальна на $[-5, -4]$ — имеет ровно один минимум при $x^* \approx -4.4933$.


Результаты

Метод равномерного поиска

ε x* f(x*) Вызовов
0.1 −4.500000 −4.820477 11
0.01 −4.490000 −4.820547 101
0.001 −4.493000 −4.820572 1001

Метод золотого сечения

ε x* f(x*) Вызовов
0.1 −4.482779 −4.820325 8
0.01 −4.494382 −4.820570 13
0.001 −4.493336 −4.820572 18

Сравнение

ε Равномерный Золотое сечение Выигрыш
0.1 11 8 ×1.4
0.01 101 13 ×7.8
0.001 1001 18 ×55.6

Равномерный поиск: $O(1/\varepsilon)$ — при уменьшении $\varepsilon$ в 10 раз число вызовов растёт в 10 раз. Золотое сечение: $O(\log(1/\varepsilon))$ — при уменьшении $\varepsilon$ в 10 раз добавляется лишь ~5 вызовов.


Полный отчёт

Подробный отчёт с выводом формул, доказательством унимодальности, верификацией результата и анализом применимости методов:

lab3_report.md


Структура проекта

optimization_methods/
├── main.cpp                    # Точка входа
├── plot.py                     # График унимодальности (Python + matplotlib)
├── CMakeLists.txt              # Сборка (C++17, CMake)
├── include/
│   ├── IMinimizer.h            # Абстрактный интерфейс
│   ├── MinimizationResult.h    # Структура результата
│   ├── UniformSearchMinimizer.h
│   └── GoldenSectionMinimizer.h
├── src/
│   ├── UniformSearchMinimizer.cpp
│   └── GoldenSectionMinimizer.cpp
├── images/
│   └── unimodality.png         # График функции
├── lab3_report.md              # Полный отчёт
└── lab3_report.pdf             # PDF-версия отчёта

Сборка и запуск

cmake -B build -S .
cmake --build build
./build/optimization_methods
# График
python3 plot.py

Требования: C++17, CMake 3.14+, Python 3 + matplotlib

About

Лабораторная работа №3: методы одномерной минимизации (равномерный поиск и золотое сечение)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages