Линейное решение нелинейной задачи, с целью применения, с помощью арктангенса, для метода обработки данных из double buffering.
Показов 4198
Комментарии 14
Публикация в доработке, метод арктангенса в комментариях внизу. Вообще изначально я пренебрёг квадратурой числа, но потом понял, что для вычисления приблизительного значения - сгодится, формулу можно будет корректировать по ходу. Это потому что прямое соотношение углов через соотношения координат отрезков - невозможно. Но тем не менее будет применён метод апроксимации. Эта LM дала ответ похожий на нормальный. В комментриях мой комментарий - похоже она ошиблась с выведением итоговой формулы, но остальные проверю. Assistant qwen2.5-14b-instruct . Сначала изображение . Уточнение - точка на которую указывает вектор лежит в области треугольника по оси Y от точки А до точки C - то есть точка веектора не выше точки C. Запрос Привет. Помоги вывести формулу по приготовленному описанию. На сетке координат дан прямой равнобедренный треугольник A-B-C, с углами у основания равными 45 градусам и с вершиной A угла основания A-B лежащей в начале отсчёта системы координат, и самим основанием (гипотенузой) соосным с осью Y. Координаты вершин этого треугольника, условно все известны по условию. Внутри этого треугольника построен отрезок A-V с известными координатами точки V. Задача: Вывести формулу по описанию решения ниже, для расчёта соответствия величины углов BAV и CAV (больший-меньший). Решение: Чтобы найти приблизительное отношение этих двух углов, нужно достроить вектор AV до AD , тогда после пересечения достроенного вектора в точке F, перпендикулярной линией СE , где E будет принадлежать AB, можно будет узнать отношение отрезков EF к FC , что будет соответствовать приблизительному соотношению нужных углов. Чтобы узнать координаты точки D отрезка AD - нужно узнать координаты точки G, для построения вспомогательного перпендикуляра от V к AC. Для этого нужно определить точку H, являющуюся отражением точки V от линии AC (угол линии на сетке равен 45 градусам), для чего нужно просто поменять местами координаты икс и игриком точки V. После этого поделив разницу полученных координат по оси Y, и прибавив к результату деления значение координаты Y точки H - становится известной координата Y точки пересечения G перпендикуляра с линией AC. Чтобы узнать координату X этой точки соответственно нужно разницу координат X точек H и V разделить на два и прибавить значение координаты X точки V . Так как треугольники AVG и предполагаемый ADC подобны, то увеличение координаты Y точки G до той-же координаты точки C пропорционально увеличению координаты Y точки V до искомой координаты Y точки D. Аналогично вычисляется значение координаты X точки D. Для нахождения координат точки F, являющуюся в свою очередь точкой пересечения достроенного вектора и перпендикуляра к нему с точки С, нужно взять во внимание то, треугольники DAC и DFC подобны, то и отрезок FD относится к DC ровно как и DC к известной теперь ADd, следовательно через пропорции координат данных треугльников находимы и координаты F, а следовательно выводима формула для нахождения приблизительного соотношения углов. Каждый квадрат на изображении - ячейка одного массива, а каждый вектор бурущий начала из точки, расположенной между двумя квадратами - ячейка другого массива. Таким образом , методом double buffering я избегу в программе вычислений квадрата числа и извлечений квадратного корня, а это будет приличным придатком к её быстродействию, так как это будет симулятор физической системы с жидкостью или газом, и твёрдыми телами. |
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 14
Комментарии
-
Запись от Hrethgir размещена 11.04.2025 в 15:08
Обновил(-а) Hrethgir 11.04.2025 в 15:09 -
Запись от Hrethgir размещена 11.04.2025 в 23:18
Обновил(-а) Hrethgir 11.04.2025 в 23:21 -
Запись от Hrethgir размещена 11.04.2025 в 23:37 -
Да, вы можете определить величину угла, используя тангенс этого угла. Для этого применяется функция арктангенса (или обратный тангенс), которая дает угол в радианах для заданного значения его тангенса.
### Ряд Тейлора для арктангенса
Ряд Тейлора для функции \(\arctan(x)\) выглядит так:
Этот ряд сходится для. Для угла до 45 градусов (что соответствует
), этот ряд будет достаточно точным.
### Пример вычислениядля
(что соответствует углу примерно 36.87 градусов)
Допустим, вам нужно найти.
1. **Начальный член ряда:**
2. **Второй член ряда:**
3. **Третий член ряда:**
4. **Четвертый член ряда:**
Сложим все члены ряда:
Это значение примерно равно \(0.638\) радиан, что соответствует около. Для большей точности можно добавить еще несколько членов ряда.
Запись от Hrethgir размещена 12.04.2025 в 00:08
Обновил(-а) Hrethgir 12.04.2025 в 00:09 -
При сравнении операций возведения числа в степень и извлечения квадратного корня для целых чисел, общее время выполнения зависит от многих факторов, таких как конкретные числа, алгоритмы реализации и архитектура процессора. Однако, можно дать некоторые общие рекомендации:
1. **Извлечение квадратного корня:**
- Извлечение квадратного корня обычно требует более сложных вычислений по сравнению с возведением в степень.
- Для целых чисел часто используется алгоритм бинарного поиска или метод Ньютона, которые могут быть менее эффективными, особенно для больших чисел.
2. **Возведение в степень:**
- Возведение в степень с использованием алгоритма быстрого возведения в степень (также известного как двоичное возведение в степень) обычно более эффективно.
- Этот алгоритм работает за время, где n — показатель степени, что значительно меньше, чем линейное время для простого умножения.
### Примеры
**Извлечение квадратного корня:**
Для числа 16:
- Извлечение квадратного корня даст 4.
- Алгоритмы, такие как бинарный поиск или метод Ньютона, будут выполняться относительно быстро, но все же медленнее возведения в степень.
**Возведение в степень:**
Для числа 2 в степени 10:
- Возведениедаст 1024.
- Алгоритм быстрого возведения в степень будет выполняться очень быстро, так как он использует сокращенные вычисления.
### Заключение
В большинстве случаев **возведение в степень** для целых чисел обычно происходит быстрее, чем извлечение квадратного корня. Это особенно заметно при больших показателях или корнеекстракции из больших чисел.
Тем не менее, для очень маленьких чисел разница может быть незначительной, и производительность будет зависеть от конкретных реализаций функций в используемых библиотеках.Запись от Hrethgir размещена 12.04.2025 в 00:16 -
наверное самый интригующий тут момент это то - что такое пропорциональное увеличение. Всё очень порсто - правило прямых треугольников как известное 3-4-5. Допустим у нас увеличился треугольник в десять раз. Во столько -же раз увеличится каждая его сторона, а иначе нарушится правило 3-4-5, было до увеличения 3-4-5, стало после 30-40-50. Никакой магии и волшебства. Не смотря на сложность вычисления самих длин сторон. То-есть сами длины сторон меня не интересуют, мне достаточно координат. А раз сторона (объекта) увеличилась в определённое количество раз, то и любая существующая его прямолинейная и параллельная из всех проекция (любой из частей) на что-либо - увеличится во столько-же раз, не взирая на размер проецируемой части. Это моё уточнённое понимание пропорциональности в геометрии. Разумеется этому наверное нейросети не обучены...меня конечно тоже такому вроде не обучали - но это легко следуемо из логики. И сложного тут ничего нет. А любая ось системы координат - отражает проекции.
Можно усложнять выражение до бесконечности, но сути это не отменяет.Запись от Hrethgir размещена 12.04.2025 в 15:25
Обновил(-а) Hrethgir 12.04.2025 в 23:01 -
Прежде чем приступить к самостоятельному выведению формул - решил проверить себя на "не дурак-ли я...", а вдруг. Решил уточнить, чтобы не получилось что я слишком всё усложнил.
Запись от Hrethgir размещена 12.04.2025 в 23:24
Обновил(-а) Hrethgir 12.04.2025 в 23:40 -
Запись от Hrethgir размещена 13.04.2025 в 07:47 -
Арктангенс я вычислять не буду, так как развёртка угла не превышает 45 градусов, то проще создать массив значений заранее вычисленных, допустим это будет массив с количеством ячеек 45*8=360, что будет эквивалентно округлению градуса до целого, единственное неудобство будет в том, что точность хранимых данных, с учётом округления будет варьироваться от начала массива до ячейки с старшим индексом. Индекс адреса обращения будет рассчитываться.
Запись от Hrethgir размещена 13.04.2025 в 11:14
Обновил(-а) Hrethgir 13.04.2025 в 13:48 -
и просмотрел ещё много чего интересного по теме. Сбор информации закончен (опрос LM), осталось только делать. Тут в общем всё понятно. Так и остаётся, только в программе будет ещё вычисление одной точки, небольшое, чтобы потом скалярами сравнивать два соседние вектора на перпендикулярность. Формулы не выводил пока, собирал и анализировал информацию по симуляторам. Ох там и воды...
Запись от Hrethgir размещена 13.04.2025 в 19:31 -
Запись от Hrethgir размещена Вчера в 06:19
Обновил(-а) Hrethgir Вчера в 06:21 -
Только температуру сбил. Приболел, три недели с осколком стружки проходил в глазу - думал пройдёт, но вместо этого ещё и простыл. Пошёл к окулисту - вытащил стружку, уже не надеялся, три недели спустя - думал зарастать уже начала, вытащил легко. А так-да, мне было трудно писать код и вести диалоги с LM. Теперь наверстаю. Сейчас всё пойдёт в гору. В общем чего я думаю добиться методом арктангенса - того что мне синусы и косинусы вычислять не надо. Так-то да - результаты вычислений синусов тоже можно сохранить в массиве, но там больше извлечений квадратных корней, и значит будет больше погрешность...хотя опять-же можно вычисляить с большой точностью и сохранить в массив...Не ...синусы не нужны ...по крайней мере я попытаюсь сделать через арктангенсы, может это будет не совсем правильно...Спрошу у LM.
Запись от Hrethgir размещена Вчера в 20:47
Обновил(-а) Hrethgir Вчера в 21:25 -
Запись от Hrethgir размещена Вчера в 20:59 -
Шикарно вроде, ну как я и предполагал
И да - если вектора будут с запятой например, а не упрощённые значения до 10, то метод арктангенса будет очень кстати. В общем мной было решено сделать так, насколько это эффективно может быть - я могу догадываться только интуитивно, поскольку на проверку доскональную у меня банально не будет времени чтобы сравнивать с чужими решениями. Но мной решено сделать именно так. Просто чисто из интуитивных предположений (математическая база есть у моего построения логики, но не проверял на практике, чисто гипотетически и интуитивно).Запись от Hrethgir размещена Вчера в 21:09
Обновил(-а) Hrethgir Вчера в 21:44