|
2 / 2 / 0
Регистрация: 16.06.2021
Сообщений: 9
|
|
Кусочно-постоянная функция29.09.2021, 12:42. Показов 4851. Ответов 8
Дана кусочно-постоянная функция F:
Напишите на Python 3 программу, которая принимает на вход массив A пар (x, y) длины n, и возвращает кортеж из трех элементов (a, b, c), соответствующих параметрам функции F, при которых среднеквадратическое отклонение функции от точек из A минимально. Визуализация решения приветствуется. Буду благодарен за помощь с решением, спасибо!
1
|
|
| 29.09.2021, 12:42 | |
|
Ответы с готовыми решениями:
8
Кусочно заданная функция |
|
Супер-модератор
|
||||||
| 29.09.2021, 19:53 | ||||||
|
Хорошая задача! Буду думать. Начать, мне кажется, нужно с кластеризации. Разбить исходные данные на два кластера. Действовать можно так: начиная от меньших x к большим и от больших x - к меньшим начать строить 2 кластера, постоянно пересчитывая среднее значение y и уточняя остаточную сумму квадратов.
Добавлено через 54 минуты Если ступенька точно одна, то можно ограничиться одним кластером. Сортируем пары по X. Берем начальные куски блока данных увеличивающейся длины и считаем среднее по y. Фиксируем последнее резкое изменение среднего. Сугубо прикидочный вариант:
2
|
||||||
|
5515 / 2868 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
|
|
| 29.09.2021, 20:47 | |
|
Catstail, думаю, что все правильно вы написали.
Но тут скорее всего нужен алгоритм итеративного вычисления среднего, дисперсии двух выборок. Подобный алгоритм был еще в советских инженерных калькуляторах при статистических расчетах. На первом шаге считаем, что слева у нас одна точка, справа - все остальные. На следующем шаге добавляем к левой части еще одну точку, а справа удаляем точку. На каждом шаге корректируется среднее значение для левой части данных и для правой, тоже самое и с дисперсиями. Дисперсии левой и правых частей складываются для каждого C - это будет целевая функция. Т.е. все считается почти за один проход.
2
|
|
|
2 / 2 / 0
Регистрация: 16.06.2021
Сообщений: 9
|
|
| 30.09.2021, 00:39 [ТС] | |
|
Пока это не кажется просто, надо переспать с этими новыми знаниями)
По сути нам просто приближенная по МНК прямая нужна, которая разделит точки, а сама станет той самой С, в правильном направлении мыслю? Но у нас нет классов, что сильно усложняет решение задачи, хотя может и упрощает, это пока что тоже не понял) но весь день я сегодня мыслил именно в таком направлении.
0
|
|
|
5515 / 2868 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
|
||||||
| 30.09.2021, 03:47 | ||||||
|
Если использовать nympy, то как-то так:
3
|
||||||
|
Супер-модератор
|
||
| 30.09.2021, 06:39 | ||
|
Во-вторых, что ООП может дать в данной задаче? Меня умиляет стремление некоторых программистов использовать ООП "и в хвост и в гриву" - там, где нужно, и там, где не нужно. Типичная задача такого рода - "дан радиус окружности, вычислить ее площадь "через ООП". Зачем тут ООП? Объекты со сложным поведением, обменивающиеся сообщениями? Сложная иерархия объектов? Сказанное в полной мере можно отнести и к этой задаче. А вот МНК здесь применять нет особого смысла. Ординаты точек группируются вокруг одной (a) или другой (b) точки на оси OY. Вычисляем среднюю - и все.
0
|
||
|
2 / 2 / 0
Регистрация: 16.06.2021
Сообщений: 9
|
|||
| 30.09.2021, 13:17 [ТС] | |||
|
ООП совсем не хотел сюда прикручивать и понимал, что задачка решается буквально одним циклом. Я одним не смог, у меня два получалось и считалось как-будто не правильно(на бумаге другие значения немного получались), но мы уже выяснили, благодаря предыдущему ответу, что задачу можно решить используя минимум иерархии. Спасибо всем за участие, помощь и удачи в решении новых задач!!
0
|
|||
|
5515 / 2868 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
|
|
| 30.09.2021, 13:31 | |
|
miracle-, потому что иначе в левом кластере совсем не будет элементов из-за строгого неравенства.
0
|
|
|
2 / 2 / 0
Регистрация: 16.06.2021
Сообщений: 9
|
||||||
| 01.10.2021, 12:29 [ТС] | ||||||
|
u235, Совсем немного решение не докрутили, поэтому делюсь окончательным вариантом, в надежде, что кому-то пригодится.
1
|
||||||
| 01.10.2021, 12:29 | |
|
Помогаю со студенческими работами здесь
9
Кусочно-непрерывная функция
Кусочно-непрерывная функция Кусочно ломанная функция кусочно-заданая функция Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|