2 / 1 / 1
Регистрация: 03.03.2023
Сообщений: 12
|
|
1 | |
Определение функции максимально быстрого перемещения на заданное расстояние03.03.2023, 14:30. Показов 1039. Ответов 16
Метки нет (Все метки)
Точка перемещается от начала координат до расстояния L. Помимо этого расстояния известна максимально возможная скорость движения, а также максимальное ускорение. Задача: определить гладкую или кусочно-гладкую функцию скорости, при которой точка будет перемещаться за минимально возможное время. В начале и конце маршрута скорость должна равняться 0. На выход выдать массив T, X, V, A.
У меня просто кончились идеи реализации алгоритма. Были такие версии: 1) Движение с переменным ускорением можно выразить как интеграл по v(t), значение которого на концах известны, а площадь, т.е. значение интеграла - пройденный путь. Но чтоб работать с интегралом нужно знать пределы интегрирования, а это время начало и время старта. Разумеется это неизвестно. 2) Сымитировать релейный регулятор. Т.е. ускоряемся в каждой точке до максимального ускорения и максимальной скорости, а где надо тормозим. Но тогда будут разрывы и непонятно что с концом.
0
|
03.03.2023, 14:30 | |
Ответы с готовыми решениями:
16
Список для максимально быстрого поиска по нему Добавить папки для быстрого копирования и перемещения файлов. Linux Mint 13 Maya Большое расстояние между иконками в панели быстрого запуска Как максимально быстро получать значения скорости и линейного перемещения Время заданное для перемещения между операциями |
2 / 1 / 1
Регистрация: 03.03.2023
Сообщений: 12
|
|
03.03.2023, 18:19 [ТС] | 3 |
Volga_, возможно я совсем не так понял ваш вопрос но попытаюсь. Условимся таким образом:
L - расстояние, которое необходимо пройти (м) Vmax - максимально возможная скорость (м/с) Amax - максимально возможное ускорение (м/(с^2) Начальная координата 0. Конечная (что логично) - L
0
|
2 / 1 / 1
Регистрация: 03.03.2023
Сообщений: 12
|
|
03.03.2023, 19:12 [ТС] | 6 |
Volga_, Честно говоря, впервые читаю про это, но ближайшее похоже, что наше из этого - это задача о брахистохроне. Однако там рассматривается движение под действием постоянной силы тяжести, а это не туда.
Добавлено через 2 минуты Kuzia domovenok, Так действительно можно было бы решить, но в условии указано, что в конце маршрута скорость должна быть равной 0. Это значит, что помимо достижения максимумов по ускорению и скорости нужно предусмотреть торможение, дабы в конечной точке остановиться. Это то, что и помешало решить задачу как в простейшей робототехнике с релейным регулятором
0
|
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
|
03.03.2023, 19:21 | 7 |
Ну ну совсем так, функция скорости вам нужна гладкая по условию. А порядок гладкости - другой вопрос. Я не спец в мат. анализе, можно решить просто - до середины пути двигаемся с максимальным ускорением или максимальной скоростью, вторую половину пути проходим так же, только "наоборот". При этом получим соблюдение всех условий, кроме гладкости - кривая скорости будет ломанной. А сгладить её можно разложив в ряд фурье, и чем выше дискретизация, тем точнее получится.
0
|
2 / 1 / 1
Регистрация: 03.03.2023
Сообщений: 12
|
||||||
03.03.2023, 21:11 [ТС] | 8 | |||||
zayats80888, Пока набросал расчет движения только в тех случаях, при которых время разгона не будет превышать половину пути. Но по непонятной мне причине где-то в конце постоянно теряю 1-2 метра от нужного.
Для примера, L = 100, Vmax = 10, Amax = 2 => конечная дистанция 98 метров. Как это сглаживать пока ума не приложу.
0
|
3719 / 2648 / 761
Регистрация: 29.06.2020
Сообщений: 9,800
|
|
03.03.2023, 21:36 | 10 |
Так может не получится.
Если максимального ускорения будет недостаточно для достижения максимальной скорости. rerre, Походу задачка чисто математическая. Чой-та оно тута делает ? Добавлено через 1 минуту Ну да, там же загвоздка в типе функции, гладкой... Добавлено через 7 минут rerre, Где, собственно ваша функция (мат.)?
0
|
2 / 1 / 1
Регистрация: 03.03.2023
Сообщений: 12
|
|
03.03.2023, 21:44 [ТС] | 11 |
теоретически, и тут смысл вроде есть. Просто разгоняться надо либо до достижения максимальной скорости. Либо до середины пути. Если ускорения хватает, то выходим на плато и тормозим. Иначе половину пути разгоняемся, а вторую тормозим.
Одной функцией описать это не смог.
0
|
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
||||||
03.03.2023, 22:56 | 12 | |||||
У вас цикл по float, сделайте нормально.
Что-то типа такого(не проверял) Кликните здесь для просмотра всего текста
Ну вы сначала определите критерий сглаженной функции, как дифференцировать её будете и т.д.
1
|
2 / 1 / 1
Регистрация: 03.03.2023
Сообщений: 12
|
|
04.03.2023, 00:33 [ТС] | 13 |
Спасибо. Для меня пока очень сложный синтаксис, но буду потихоньку разбираться
0
|
2 / 1 / 1
Регистрация: 03.03.2023
Сообщений: 12
|
||||||
06.03.2023, 02:42 [ТС] | 14 | |||||
zayats80888, помозговал выходные и пришел к выводу о том, что можно решить задачу без дополнительного сглаживания, пользуясь только определениями гладкой и кусочно-гладкой функциями. Гладкость обеспечивается непрерывностью производной функции. Соответственно, для того, чтобы V(t) была гладкой - a(t) должна быть непрерывной линейной или кусочно-линейной функцией. С такой функцией ускорения остается определить путь, который необходимо пройти за время разгона/торможения, а это двойной интеграл, который спокойно считается численными методами. Расчет скорости и пройденного пути - просто комбинации s v t.
Переделал код. И вроде бы складно, но все равно либо завышает по скорости или пути, либо занижает (в зависимости от случая). Стоит ли вообще в эту сторону идти или искать ответ в другом месте?
0
|
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
||||||
06.03.2023, 16:06 | 15 | |||||
Сообщение было отмечено rerre как решение
Решение
Допустим, просто в точках "излома" вообще говоря производная не существует, т.к. левая и правая производная не равны.
Численное интегрирование не точно, но чем меньше шаг, тем точнее. 1) По условию требуется "гладкость" только для функции скорости, и если пользоваться только критерием непрерывности, то функция ускорения может иметь разрывы первого рода. 2) Не вижу необходимости интегрирования, можно кусочные функции для всех значений сделать. Тогда для скорости и ускорения использовать линейную интерполяцию, а для перемещения считать по фрмуле, т.к. там квадратичная зависимось. Например, так: c++
2
|
2 / 1 / 1
Регистрация: 03.03.2023
Сообщений: 12
|
|
06.03.2023, 17:53 [ТС] | 16 |
В данных случаях графики V(T) не являются гладким, т.к. существует скачок, появившийся в следствие устранения разрыва 1 рода.
Я стремлюсь к чему-то такому (рисунок ниже). Собственно отсюда и выскочил интеграл. То, что ускорение имеет разрыв перед нулевым значением, является следствием того, что определенное время разгона/торможения является неточным. Да. Ускорение можно представить кусочно-линейной функцией: a(t) = (-aMax/tvMax)*t + aMax при 0 <= t <= tvMax a(t) = 0 при tvMax < t <= tvMax + (halfL - lvMax) / vMax * 2.0 a(t) = (-aMax/tvMax)*(t-(halfL - lvMax) / vMax * 2.0) + aMax при tvMax + (halfL - lvMax) / vMax * 2.0 <= t <= (halfL - lvMax) / vMax * 2.0 + tvMax * 2 Однако и здесь для принятия решения о пути разгона нужно интегрирование. Ошибка, которая вызывает неточность связана с неточностью моего варианта определения времени разгона. Считал я его исходя из физического смысла интеграла, тогда задача определения времени сводится к определению такого катета прямоугольного треугольника, что его площадь будет равна площади под графиком в случае постоянного ускорения. Но расчетное значение завышено
0
|
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
|
06.03.2023, 18:36 | 17 |
0
|
06.03.2023, 18:36 | |
06.03.2023, 18:36 | |
Помогаю со студенческими работами здесь
17
Определить, при каком х расстояние между f1 (x) и f2 (x) максимально Разработать метод, который возводит заданное число х в натуральную степень п, используя алгоритм быстрого возведения Определить номера станций, расстояние между которыми максимально Определение наименьшего времени перемещения Найти пару отрезков, расстояние между центрами которых максимально Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
|
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins
В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
|
Как написать микросервис на Go/Golang с Kafka и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang
Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
|
Как написать микросервис с нуля на C# с RabbitMQ, CQRS и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
|
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
|
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
|
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
|
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента!
4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве).
Первое вводное занятие. . .
|
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
|
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений
Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
|
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
|
UserScript для подсветки кнопок языков программирования в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения:
/ / ==UserScript==
/ / @name CF_DefaultLangSelect
/ / . . .
|