Просмотр полной версии : Порядок аппроксимации
Извините, если длинно...
Моделивание движения объектов (самолетов) - по сути численное решение дифф уравнения движения (общий вид: x'(t)=f(x(t)) ). Для таких вещей используются разностные схемы (самая простая: x(t+dt)=x(t)+f(x(t))*dt). Каждая такая схема всего лишь приближает исходное уравнение, и ошибка этого приближения уменьшается с уменьшением dt (шага по времени). А 1/dt - это, фактически, загрузка процессора обсчетом ФМ. Т.е. вообще-то чем больше dt при приемлемой точности - тем меньше грузится процессор.
Ну так вот, порядок аппроксимации разностной схемы определяет, насколько быстро увеличивается степень приближения (а значит и точность) с уменьшением dt.
Приведенный пример имеет первый порядок аппроксимации (т.е. ошибка прямо пропорциональна dt). Существуют лучшие съемы (например x(t+dt)=x(t-dt)+2f(x(t))). У нее второй порядок аппроксимации (dt уменьшили в два раза - в 4 раза выше точность). Соответственно с небольшими допущениями (max(x''') примерно равен max(x''), а то и меньше?..) получаем, что заменив первую схему на вторую получим сниждение нагрузки на процесор при той же точности. Например, если обсчитывается 100 "тиков" в секунду, то будет 10, т.е. нагрузка на процессор в 10 раз снизится (это грубо).
У меня процессор слабоват, поэтому при большом количестве самолетов - тормозит, поэтому
давно не дает покоя вопрос - схема какого порядка аппроксимации используется в Иле? Может быть, есть потенциал увеличения производительности?
...............
(тут смайлик с отвисшей челюстью)
на обсчет именно движения там уходит не так много времени. на просчет преобразования координат, например, гораздо больше
Miguel Gonsalez
22.05.2003, 18:06
Блин, это давно известно, что за время подготовки 3D-сцены и рендеринга кадра можно с пару десятков флайт-моделей обсчитать с охрененной точностью и еще пару десятков АИ и прочей фигни.
Проводил эксперимент - в Ил2 в сценах с большим количеством самолетов нажимал паузу - fps вырастали. Вывод - время, тратившееся на ФМ и АИ, стало тратиться на графику. Соответственно, если уменьшить это время за счет оптимизации - fps тоже вырастут. Я не прав?
Miguel Gonsalez
пара десятков это маловато. в некоторых миссиях самолетов существенно поболе летает. а уж если в такой мисси включить время 8x то сразу становится понятно что в иле не только 3d engine тормозит
Dab, да, на обсчет FM,DM,AI уходит очень много времени, но просчет именно дифференциальных уравнений занимает из этого не так много.
Miguel Gonsalez
22.05.2003, 18:25
Ну, я же не говорю, что просчет ФМ и АИ не требуют ресурсов... просто требуют на порядок меньше, чем графика. Кстати, эксперимент с паузой почти ничего не доказывает.
hammurapi
22.05.2003, 18:26
:eek::eek::eek: "Папа, а с кем это ты токо шо разговаривал?" (С) Анекдот :)
Originally posted by Dab
Существуют лучшие съемы (например x(t+dt)=x(t-dt)+2f(x(t))). У нее второй порядок аппроксимации (dt уменьшили в два раза - в 4 раза выше точность).
Ты часом не ошибся, может f(x(t)) в КВАДРАТ возводится а не тупо умножается на 2 :)
Энто совсем другое грузилово на камень:D:D:D
Kirich, все правильно, сам посчитай, невязка получается примерно 1/6*x'''*(dt)^2
Я тут подумал, кстати. А использование схемы с маленьким порядком аппроксимации и недостаточно маленьким dt (например, для того, чтобы ФМ не отъедало слишком много времени) будет приводить к набору кинетической энергии в вираже. На самом деле, на каждом шаге для расчета следующего шага ускорение всегда будет направлено немного "вдоль" вектора скорости (что будет эту скорость увеличивать). Сложно это объяснить, надо рисовать... Может, проблемы с варажами были из-за этого?
Решить эту проблемe можно уменьшением шага по времени dt, соответственно потеряв в fps, либо использованием лучшей схемы.
23AG_Oves
23.05.2003, 13:11
Расчёт FM имхо не так сильно грузит всё, пока эти все самолёты не попадают в кадр (тут уже не расчёт FM в действие вступает). Вот тут-то и начинается веселье. Например, строй из 33 хейнкелей не так сильно снижает фпс на карте Питера (с 35 до 32-33), пока их не видишь. А когда увидишь... то до 18-22, если ближе подлететь и того меньше.
Я тут сначала написал, а потом посидел, подумал... Нафига попу гармонь:
Аппроксимация [approximation] — "замена одних математических объектов другими, в том или ином смысле близкими к исходным" (БСЭ. Т. 2, стр. 134); в частности — приближенное выражение сложной функции с помощью более простых. Например, при кусочно-линейной А., непрерывная дифференцируемая функция может быть заменена на функцию, состоящую из нескольких линейных участков (см. Кусочно-линейная функция).
В задачке спрашивается что больше камня поимеет - вычисление самой ф-ции или постоянное вычисление аппроксимирующей ф-ции, а уж затем вычисление на ее основании выходных результатов)))))))))))))))))))))))))) Чиста ЛОЛ))))))))))))))))
Имхо все проще - как в штурманском деле каждый такт берутся векторв и по ним все рисуется))))))))))))))))))))
а что, если в выражении вместо скаляров фигурируют вектора, аппроксимация перестает быть аппроксимацией?
Originally posted by pwl
а что, если в выражении вместо скаляров фигурируют вектора, аппроксимация перестает быть аппроксимацией?
ЛОООООООЛ. А функция то где?????????????? (вопрос баклана)))))))))))))))))))
Originally posted by Kirich
ЛОООООООЛ. А функция то где?????????????? (вопрос баклана)))))))))))))))))))
В данном случае речь шла об аппроксимации дифф уравнения движения, а не функции. В энциклопедии про это может быть не написано, лучше посмотреть любой курс вычислительной математики
И вообще, разговор то не об этом. Мне кажется, что реально существует возможность обсчитывать сотни самолетов в IL2 без тормозов. Просто из личного опыта моделирования движения хорошо помню случай, когда замена первой схемы на вторую привела к очень большому увеличению скорости обсчета (без потери качества)
2 pwl
Человек говорил о том, что при выборе схемы большего порядка, количество ШАГОВ можно уменьшить вдвое (он говорил про 10 раз, но он ошибался).
А, следовательно, и количество всех остальных вычислений (поворотов, и т.д.) сократилось бы вдвое.
2 Dab
Первого порядка схемы используются.
Но это не так важно.
Конечно, используя схему второго порядка, можно было бы получить тот же ИНТЕГРАЛЬНЫЙ результат за меньшее число шагов. Но! Нам нужно динамика, а значит мгновенные вторичные показатели (типа кинетической энергии, как ты справедливо заметил) были бы искажены сильнее. Да и банальная дискретность движений (кусочно-линейных перемещений) увеличилась бы, что смотрелось бы хуже.
Originally posted by deCore
2 Dab
Первого порядка схемы используются.
Но это не так важно.
Конечно, используя схему второго порядка, можно было бы получить тот же ИНТЕГРАЛЬНЫЙ результат за меньшее число шагов. Но! Нам нужно динамика, а значит мгновенные вторичные показатели (типа кинетической энергии, как ты справедливо заметил) были бы искажены сильнее. Да и банальная дискретность движений (кусочно-линейных перемещений) увеличилась бы, что смотрелось бы хуже.
Спасибо за ответ. Не совсем понял про искажение мгновенных вторичных показателей (имеется в виду, что отклонение будет маленьким в узлах, но большим в середине шага?)
Насчет дискретности движений. Я думал, что между двумя кадрами (прорисовками) происходит несколько "физических" шагов, разве не так?
Кстати кто-нибудь сказать может как они аэродинамическую ФМ обсчитывают ? Предварительная продувка+интерполирование, или обсчёт офигеннно нечестный ?
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot