add docs
This commit is contained in:
@@ -90,44 +90,6 @@ def hooke_jeeves(
|
||||
return x, f(x), x_err
|
||||
|
||||
|
||||
# def exploratory_search(
|
||||
# f, x, delta, r=lambda x: True, fit=lambda a, b: a < b, x_err=None
|
||||
# ):
|
||||
# log()
|
||||
# log("Выполняем исследующий поиск")
|
||||
|
||||
# if x_err is None:
|
||||
# x_err = get_errors_vector(x)
|
||||
|
||||
# x_new = np.array(x)
|
||||
# f_x_new = f(x_new)
|
||||
|
||||
# for i in range(len(x)):
|
||||
# x_up = x_new.copy()
|
||||
# x_down = x_new.copy()
|
||||
|
||||
# x_up[i] += delta[i]
|
||||
# x_down[i] -= delta[i]
|
||||
|
||||
# f_x_up = f(x_up)
|
||||
# f_x_down = f(x_down)
|
||||
|
||||
# if not r(x_up) or not r(x_down):
|
||||
# log("Ограничение ОДЗ")
|
||||
|
||||
# if fit(f_x_up, f_x_new) and fit(f_x_up, f_x_down) and r(x_up):
|
||||
# x_new = x_up
|
||||
# f_x_new = f_x_up
|
||||
# elif fit(f_x_down, f_x_new) and r(x_down):
|
||||
# x_new = x_down
|
||||
# f_x_new = f_x_down
|
||||
|
||||
# if any([x_new[i] != x[i] for i in range(len(x))]):
|
||||
# log("Найдена точка", x_new, f(x_new))
|
||||
|
||||
# return x_new, x_err
|
||||
|
||||
|
||||
def exploratory_search(
|
||||
f, x, delta, r=lambda x: True, fit=lambda a, b: a < b, x_err=None, delta_err=None
|
||||
):
|
||||
|
||||
73
lab2/README.md
Normal file
73
lab2/README.md
Normal file
@@ -0,0 +1,73 @@
|
||||
# Лабораторная работа по вычислительной математике "Нелинейное программирование"
|
||||
|
||||
## Запуск
|
||||
|
||||
Склонировать проект и перейти в директорию проекта
|
||||
|
||||
```shell
|
||||
git clone ... project
|
||||
cd project
|
||||
```
|
||||
|
||||
Создать виртуальное окружение
|
||||
|
||||
```shell
|
||||
python3 -m venv .venv
|
||||
```
|
||||
|
||||
Активировать ыиртуальное окружение
|
||||
|
||||
```shell
|
||||
#win powershell
|
||||
.venv/Scripts/activate.ps1
|
||||
|
||||
# win bash
|
||||
source
|
||||
|
||||
# unix
|
||||
source .venv/bin/activate
|
||||
```
|
||||
|
||||
Установить зависимости
|
||||
|
||||
```shell
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
Запустить скрипт
|
||||
|
||||
```shell
|
||||
python3 HookJeeves.py
|
||||
```
|
||||
|
||||
Результат выполнения будет отображен в консоли и в файле `result.log`
|
||||
|
||||
## Организация работы
|
||||
|
||||
1. Лабораторная работа выполняется индивидуально.
|
||||
2. Лабораторная работа состоит из двух частей, основная часть и дополнительные задания в зависимости от качества выполнения работы.
|
||||
3. Выбрать можно любой из предложенных вариантов, которые отличаются уровнем сложности и, как следствием, максимальным числом баллов, которое можно получить за выполнение.
|
||||
4. Оценивается результат выполнения, а не качество написанного кода. Допускается реализация на любом языке программирования или среде разработки позволяющей решить задачу (1С, Excel, MatLAB, Maple и тд). Например, можно использовать макросы в Excel, но нельзя использовать готовый плагин для решения задач.
|
||||
5. Допускается использование математических библиотек и пакетов реализующих вспомогательные функции, такие как операции с векторами и матрицами, вычисление градиента и Гессиана, основные математические функции. Использование готовых методов оптимизации не допускается.
|
||||
|
||||
## Общее задание
|
||||
|
||||
1. Необходимо составить программную реализацию одного из изученных методов оптимизации полиномиальной функции с оценкой абсолютной погрешности работы данного метода.
|
||||
2. Программа должна позволять ввести произвольные значения в заранее подготовленный файл, с клавиатуры или другим общепринятым способом. Генерация случайных данных не допускается.
|
||||
3. Количество ненулевых коэффициентов в проверочных примерах должно быть не менее 10.
|
||||
4. Результатом работы программы должны быть:
|
||||
- Значения неизвестных (массив X) для минимума и максимума функции на заданном отрезке.
|
||||
- Результаты подстановки неизвестных целевую функцию
|
||||
- Оценки абсолютных погрешностей для найденных значений
|
||||
- Поощряется вывод промежуточных вычислений и графиков функции.
|
||||
5. Полученные абсолютные погрешности вычислений должны быть допустимыми, то есть не превышать половины единицы измерения искомых величин (не превышать 5%).
|
||||
|
||||
## Пояснения по расчету погрешностей
|
||||
|
||||
1. Для расчета погрешностей необходимо использовать формулы из соответствующей лекции со слайдов 7 и 8. Так как все алгоритмы подразумевают только выполнения базовых математических операций, то формулы со слайда 9, вам скорее всего не пригодятся.
|
||||
2. Погрешности исходных данных считаются по умолчанию и равны половине последнего введенного знака. То есть для числа 48 абсолютная погрешность равна 0.5, а для числа 48.01 абсолютная погрешность равна 0.005. Отдельно вводить погрешности для входных данных не требуется. Таким образом для достижения требуемого результата значения на входе должны иметь достаточно малые абсолютные погрешности.
|
||||
3. Для косвенной само-проверки расчета погрешностей разумно подсчитывать общее количество операций сложения, вычитания, умножения и деления. Это позволит понять где идет наибольшее накопление погрешностей и исправить ошибку.
|
||||
|
||||
## Вариант задания
|
||||
|
||||

|
||||
BIN
lab2/docs/zadanie.png
Normal file
BIN
lab2/docs/zadanie.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 55 KiB |
Reference in New Issue
Block a user