Skip to content

Instantly share code, notes, and snippets.

@Link-God
Last active December 16, 2018 14:07
Show Gist options
  • Save Link-God/808f71519478123c8901073c36a89a68 to your computer and use it in GitHub Desktop.
Save Link-God/808f71519478123c8901073c36a89a68 to your computer and use it in GitHub Desktop.

https://github.com/Link-God/MO6/blob/master/main.py

Так. Для начала напишем несколько функций.

  1. Будет возвращать значение f(x), где f наш sin(x) + 0.5 Псевдокод: fun(x) return sin(x) + 0.5

2.Функция которая генерирует массив альф. Рассмотрим для r = 3. Те М = 1. (всего альф будет 3 тк r = 3). Как это работает. Сначла rnd(0,1). Те число(double) между 0 и 1. Это в середину. А по бокам два ОДИНАКОВЫХ числа от 0 до (1 - то что в середине) Пример a1 = 0.45 a0 = a2 = rnd(0,1-0.45) Полезная ссылка : https://en.cppreference.com/w/cpp/numeric/random/uniform_real_distribution Возвращаем массив альф.

3.Функция которая накладывает шум. K = 0,1,2 ... 100 (тип массив) //объявляем какой-то массив array// xk смотрим в методе получаем новый элемент(f- 1 функция) el = f(xk) + rnd(-a,a) см. полезную ссылку выше элемент добавляем в массив array делаем так для каждого k return массив

4.Филтруем базар сигнал fun(массив из пункта 3, массив альф(2 функция)) новый array(он меньше чем исходный на 2(ТОЛЬКО ДЛЯ r = 3 и М =1) тк мы отбросим крайние элементы) для кажлоко k (а точнее j) по формуле из методы (сами надеюсь сумму там напишите (ВАЖНО ТАМ ИНЕДКСЫ С 1 у альфа, и с нуля у f)) находим элемент ВАЖНО проверять чтобы индексы не были OutOfRange. Элемент пушим в массив. return массив

5.Функция которая реализует подсчет омежки (далее омежка = w). Псевдокод: fun(массив фильтрованного сигрнала) по формуле из сетоды считаем возвращаем то что посчитали

6.Функция которая реализует подсчет дэльты (далее дэльты = d). fun(оба массива , фильтрованный и нет) считаем по формуле возвращаем

  1. Функция для J . fun(лямбда(= h), w , d) считаем возвращаем

ВСЁ с функциями

Пишем

Для каждого h (см методу их там 11 (0, 0.1, 0.2 ... 1 )) Делаем случайный поиск как в 5 лабе (каждый раз генерим альфу сигналы и w с d) J мин надо найти(за N итераций) и сохранить N раз (N посчитать можно по формуле заранее)

В итоге для каждой лямбды нашли J минимальное сличайным поиском и сохранили из вместе (еще надо хранить для каждой свой массив альф , массивы сигналов , и w c d)

Страшно : прямой пассивный поиск Не страшно : это всего лишь перебор с начала и тип до конца но нет (у нас функция унимодальная. короче на отрезке 1 минимум.) Элементы это наши J для каждой лямбды из этого следует берем 0 элемент . Тип он минимальный берем 1 элемент , если меньше нулевого , то новый минимум и так далее(при этом каждый раз булет меньше и меньше пока ...) НО Если новый элемент больше минимума , то break (тк мы знаем что дальше они опять возрастают) ЭТО ТИП ПАРАБОЛА РОГА ВВЕРХ (НУЖНО НАЙТИ ВЕРШИНУ) Нашли вершину Это все . мы молодцы . нашли минимум J и при каком она лямбде достинаеться MISSION COPMLITE

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment