Добавлен: 05.12.2023
Просмотров: 56
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНОБРНАУКИ РОССИИСанкт-Петербургский государственныйэлектротехнический университет«ЛЭТИ» им. В.И. Ульянова (Ленина)Кафедра информационных системотчетпо лабораторной работе №1по дисциплине «Системы ППР»Тема: Минимизация функций однойпеременной в пакете Matlab.Вариант: 6
Санкт-Петербург2020Цель работы.Четырьмя методами найти локальные минимумы следующих функций:
Точки минимума получились разные, но они близки друг к другу. Разный результат объясняется погрешностью. Убедимся в правильности найденных точек, построив график функции (рис. 1).
Рисунок 1 – График функции.Из графика видно, что точки найдены верно.Нахождение минимумов формулы №2Вид функции на языке Matlab:function y = fx(x) y = x*exp(x)+sin(x); end Таблица 2 – Нахождение локального минимума
Так как на промежутке [-∞:-2] функция представляет собой синусоиду c периодом 2πn, то у неё бесконечное количество локальных минимумов. Убедимся в правильности найденных точек, построив график функции (рис. 2).Рисунок 2 – График функции.Из графика видно, что точки найдены верно.Выводы.В данной лабораторной работе были найдены локальные минимумы двух функций с помощью: оптимального пассивного поиска, метода деления отрезка пополам, метода Фибоначчи и метода золотого сечения. При нахождении локальных минимумов первой функции получилось 4 разных ответа, но они очень близки друг к другу. Эту разницу можно объяснить погрешностью. Полученные результаты были проверены с помощью графика.Найти все локальные минимумы второй функции невозможно, так как на промежутке [-∞:-2] функция представляет собой синусоиду c периодом 2πn. Полученные результаты были проверены с помощью графика.ПРИЛОЖЕНИЕ 1Используемый код
% - delta - Расстояние между точками%Выход - x - Минимальный локальный минимумi = a;min_x = i;min_y = fx(min_x);while i<=b if (min_y > fx(i))min_x = i;min_y = fx(min_x);endi = i + delta;endx = min_x; end
| Студент гр. 6373 | | |
| Преподаватель | | |
| | Оптимальный пассивный поиск (delta = 0.0001) | Метод деления отрезка пополам (delta = 0.0001) | Метод Фибоначчи (eps = 0.0001) | Метод золотого сечения (eps = 0.0001) |
| X локального минимума | 1.6859e-12 | 0 | 6.2931e-05 | 5.9609e-05 |
| Значение функции в точке минимума | 2.8423e-24 | 0 | 3.9603e-09 | 3.5532e-09 |
Рисунок 1 – График функции.Из графика видно, что точки найдены верно.Нахождение минимумов формулы №2Вид функции на языке Matlab:function y = fx(x) y = x*exp(x)+sin(x); end Таблица 2 – Нахождение локального минимума
| | Оптимальный пассивный поиск (delta = 0.0001) | Метод деления отрезка пополам (delta = 0.0001) | Метод Фибоначчи (eps = 0.0001) | Метод золотого сечения (eps = 0.0001) |
| X локального минимума | -1.4633, -7.8513, -14.1372, -2πn | -1.4633, -7.8513, -14.1372, -2πn | -1.4633, -7.8513, -14.1372, -2πn | -1.4633, -7.8513, -14.1372, -2πn |
| Значение функции в точке минимума | -1.3329, -1, -1, …, -1 | -1.3329, -1, -1, …, -1 | -1.3329, -1, -1, …, -1 | -1.3329, -1, -1, …, -1 |
-
Метод оптимального пассивного поиска – Файл passiveSearch.m
% - delta - Расстояние между точками%Выход - x - Минимальный локальный минимумi = a;min_x = i;min_y = fx(min_x);while i<=b if (min_y > fx(i))min_x = i;min_y = fx(min_x);endi = i + delta;endx = min_x; end
-
Метод деления отрезка пополам – Файл delotrpopolam.m
-
Поиск по золотому сечнию – Файл goldcut.m
-
Метод фибоначчи –