Лабораторная работа по вычислительной математике "Нелинейное программирование"
Запуск
Склонировать проект и перейти в директорию проекта
git clone ... project
cd project
Создать виртуальное окружение
python3 -m venv .venv
Активировать ыиртуальное окружение
#win powershell
.venv/Scripts/activate.ps1
# win bash
source
# unix
source .venv/bin/activate
Установить зависимости
pip install -r requirements.txt
Запустить скрипт
python3 HookJeeves.py
Результат выполнения будет отображен в консоли и в файле result.log
Организация работы
- Лабораторная работа выполняется индивидуально.
- Лабораторная работа состоит из двух частей, основная часть и дополнительные задания в зависимости от качества выполнения работы.
- Выбрать можно любой из предложенных вариантов, которые отличаются уровнем сложности и, как следствием, максимальным числом баллов, которое можно получить за выполнение.
- Оценивается результат выполнения, а не качество написанного кода. Допускается реализация на любом языке программирования или среде разработки позволяющей решить задачу (1С, Excel, MatLAB, Maple и тд). Например, можно использовать макросы в Excel, но нельзя использовать готовый плагин для решения задач.
- Допускается использование математических библиотек и пакетов реализующих вспомогательные функции, такие как операции с векторами и матрицами, вычисление градиента и Гессиана, основные математические функции. Использование готовых методов оптимизации не допускается.
Общее задание
- Необходимо составить программную реализацию одного из изученных методов оптимизации полиномиальной функции с оценкой абсолютной погрешности работы данного метода.
- Программа должна позволять ввести произвольные значения в заранее подготовленный файл, с клавиатуры или другим общепринятым способом. Генерация случайных данных не допускается.
- Количество ненулевых коэффициентов в проверочных примерах должно быть не менее 10.
- Результатом работы программы должны быть:
- Значения неизвестных (массив X) для минимума и максимума функции на заданном отрезке.
- Результаты подстановки неизвестных целевую функцию
- Оценки абсолютных погрешностей для найденных значений
- Поощряется вывод промежуточных вычислений и графиков функции.
- Полученные абсолютные погрешности вычислений должны быть допустимыми, то есть не превышать половины единицы измерения искомых величин (не превышать 5%).
Пояснения по расчету погрешностей
- Для расчета погрешностей необходимо использовать формулы из соответствующей лекции со слайдов 7 и 8. Так как все алгоритмы подразумевают только выполнения базовых математических операций, то формулы со слайда 9, вам скорее всего не пригодятся.
- Погрешности исходных данных считаются по умолчанию и равны половине последнего введенного знака. То есть для числа 48 абсолютная погрешность равна 0.5, а для числа 48.01 абсолютная погрешность равна 0.005. Отдельно вводить погрешности для входных данных не требуется. Таким образом для достижения требуемого результата значения на входе должны иметь достаточно малые абсолютные погрешности.
- Для косвенной само-проверки расчета погрешностей разумно подсчитывать общее количество операций сложения, вычитания, умножения и деления. Это позволит понять где идет наибольшее накопление погрешностей и исправить ошибку.
