Войти
ПрограммированиеФорумФизика

метод рунге-кутта 4 порядка! Нужен ли ? (3 стр)

Страницы: 1 2 3 4 Следующая »
#30
7:52, 29 янв. 2018

werasaimon
> float accel( float pos , float vel , float _dt )
> {
> return /*acceleration*/ vel * _dt;/*pos + vel * _dt*/;
> }
боже мой, это катастрофа. ты опять своровал откуда-то код, даже примерно не разобравшись, что он делает? я могу даже по коду сказать, какие его части ты сам написал, а какие — сворованы.


#31
22:01, 29 янв. 2018

Suslik
Узбогойся ! Ты хоть понимаешь какой это абсурд. Я спрашываю помогите розобраться потому что я не понимаю, а ты пишеш что я не понимаю . Ну спасибо кеп!
P.S: код с википедии , немного переделаный под c++!


Я так понимаю на этом форуме уже нечего искать ответов, критика ради критики, одну знаменитую тв-передачу напоминает!
Эсли уж критикуешь то придлагай  .


//--------------------------------------------------------//
Если эсть кто то , кто разбирается с RK4 , помогите пожалуйста  розобраться что я делаю не так ?
P.S: может кто посоветует где взять исходники с RK4?

+ Показать

P.S: И функция accel, естественно не верная , для простого линейного перемещения !

#32
1:28, 30 янв. 2018

werasaimon
забудь про скорости, позиции и ускорения для одной точки. учись мыслить в терминах степеней свободы системы и их производных. так вот РК используется для решения системы вида
[cht]\dot x = f(x, t)[/cht]. один вектор неизвестных, одна его производная производная, одно время. всё. дальше, если тебе надо моделировать движение материальной точки, то вектор [cht]x[/cht] представляет из себя:
[cht]x=\left[\array{\vec{p} \\ \vec{v}}\right][/cht], здесь [cht]\vec p[/cht] — позиция точки, [cht]\vec v[/cht] — её скорость. тогда производная этого вектора будет, соответственно:
[cht]\dot x=\left[\array{\vec{v} \\ \vec{a}}\right] [/cht], для самого простого случая функция равноускоренного движения функция [cht]f(x, t)[/cht] будет выглядеть так:
[cht]f(x, t)=f(\left[\array{\vec{p}(t) \\ \vec{v}(t)}\right], t) = \left[\array{\vec{v}(t) \\ \vec{a_0}}\right][/cht]
для более сложного случая любое отличие всегда будет только в компоненте [cht]\vec a_0[/cht], потому что компонента [cht]\dot {\vec p} = \vec v[/cht] — фиксирована и содержит смысл взаимоотношения скорости и позиции.

любой метод интегрирования дифференциальных уравнений занимается тем, что, имея состояние [cht]x(t)[/cht] и функцию [cht]f(x, t)[/cht], переводит их в состояние [cht]x(t + \Delta t)[/cht]. например, эйлер делает это по формуле
[cht]x(t + \Delta t) = x(t) + f(x(t), t) \Delta t[/cht]
РК делает это по чуть более длинной формуле, но суть — в том же самом.

> P.S: может кто посоветует где взять исходники с RK4?
PS тебе не исходники нужны, а внимательное чтение базовых статей на википедии для начала. что такое производные, что такие системы дифференциальных уравнений, итп. ты постоянно пытаешься хвататься за что-то сложное, убеждая себя, будто оно тебе по силам, хотя на самом деле элементарные вещи не удосуживаешься освоить.

#33
3:14, 30 янв. 2018

Десять лет назад писал одну приколюху на физике, типа пузыри как в Gish, только в 3d. Ну там, соответственно, куча точек, соединённых определёнными силами. И Рунге-Кутта неплохо это дело стабилизировал. В общем, вот основной код симуляции, мож пригодится кому (Дельфи).

+ Показать
#34
3:28, 30 янв. 2018

BUzer
давай видево

#35
5:17, 30 янв. 2018

Suslik
> фиксирована и содержит смысл взаимоотношения скорости и позиции.
Ты про констату итегрирования?


Suslik
> забудь про скорости, позиции и ускорения для одной точки. учись мыслить в
> терминах степеней свободы системы и их производных. так вот РК используется для
> решения системы вида
> . один вектор неизвестных, одна его производная производная, одно время. всё.
> дальше, если тебе надо моделировать движение материальной точки, то вектор
> представляет из себя:
> , здесь — позиция точки, — её скорость. тогда производная этого вектора
> будет, соответственно:
> , для самого простого случая функция равноускоренного движения функция будет
> выглядеть так:
>
> для более сложного случая любое отличие всегда будет только в компоненте ,
> потому что компонента — фиксирована и содержит смысл взаимоотношения скорости
> и позиции.
> любой метод интегрирования дифференциальных уравнений занимается тем, что, имея
> состояние и функцию , переводит их в состояние . например, эйлер делает это по
> формуле
>
> РК делает это по чуть более длинной формуле, но суть — в том же самом.


Спасибо конечно . Но я прекрасно знаю что такое производные, и что такое дефорсирование, и  как они работают. Но поскольку мы на форуме это по-любому кому-то пригодиться !

Вот изменил временную функцию , и сделал всё в векторном варианте . Ну короче сделал именно так как ты написал , Вроде как всё должно быть верно и должно работать  ! Но уж слишком расходиться с методом Эйлера ,В чём проблема ?

+ Показать


BUzer
> Десять лет назад писал одну приколюху на физике, типа пузыри как в Gish, только
> в 3d. Ну там, соответственно, куча точек, соединённых определёнными силами. И
> Рунге-Кутта неплохо это дело стабилизировал. В общем, вот основной код
> симуляции, мож пригодится кому
О круто ! Это то что мне нужно!
P.S : Десят лет , серйзно? А можеш показать как ведут себя тела  с RK4 и без нёго? Было бы интиресно посмотреть!


P.S : а вот интиресно можно ли преминить метод рунге-кутта 4-порядка для уравнений  наве-стокса, и , получить очень супер стабильную гидродинамику ?

#36
7:47, 30 янв. 2018

werasaimon
> я прекрасно знаю что такое производные, и что такое дефорсирование
/o

#37
8:26, 30 янв. 2018

werasaimon
У меня не сохранилось версий без RK4, но там, насколько помню, оно вообще было не работоспособно — пузыри чуть что начинало колбасить, и они просто взрывались.

#38
8:41, 30 янв. 2018

BUzer
вообще говоря, это странно, потому что у RK4 устойчивости, вроде, больше быть не должно, насколько я помню. при том же шаге по времени устойчивость должна быть примерно той же. вроде. но у РК4 4 стадии, поэтому эффективный time step получается как бы в 4 раза меньше, поэтому сравнивать устойчивость имеет с эйлером с шагом по времени, уменьшенным в 4 раза.

#39
21:53, 30 янв. 2018

BUzer
А можеш глянуть мой код , и сказать что не так ?


Suslik
> вообще говоря, это странно, потому что у RK4 устойчивости, вроде, больше быть
> не должно, насколько я помню. при том же шаге по времени устойчивость должна
> быть примерно той же. вроде. но у РК4 4 стадии, поэтому эффективный time step
> получается как бы в 4 раза меньше, поэтому сравнивать устойчивость имеет с
> эйлером с шагом по времени, уменьшенным в 4 раза.
А разве РК4 не будет быстрей сходиться даже чем метод ейлера с четыри раз уменьшеным временым шагом (dt)?
Видь времиная функция от маятника при интегрировании методом RK4 вроде как должна быть более гладкой, чем даже при интегрировании методом Эйлера с четыри раза уменьшеным временым шагом ?

https://goo.gl/images/ErUYZz

P.S: Я думал что RK4 используется для симуляции ткани именно потому что он бистрей сходиться. !

Suslik
> /o
>
А что это значит ?

#40
1:11, 31 янв. 2018

werasaimon
> А разве РК4 не будет быстрей сходиться даже чем метод ейлера с четыри раз
> уменьшеным временым шагом (dt)?
> Видь времиная функция от маятника при интегрировании методом RK4 вроде как
> должна быть более гладкой, чем даже при интегрировании методом Эйлера с четыри
> раза уменьшеным временым шагом ?
сходиться он будет быстрее в зоне, где оба алгоритма устойчивы. а устойчивы они примерно в одной и той же зоне, насколько я помню. то есть рунге-кутта в сравнении с эйлером будет точнее и выражаться это будет в том, что, например, энергия из системы будет меньше уходить, то есть колебания меньше затухать, а это — вовсе не факт, что тебе нужно.

если тебе нужно cloth dynamics, то не парь людям мозг, а так и скажи. cloth dynamics никто уже давным-давно явными методами интегрирования не решает. там тащат multigrid солверы. короче мне лень искать конкретные пейперы, потому что все современные по запросу "cloth multigrid simulation" ведут на слишком продвинутые и сложные алгоритмы, с которых лучше не начинать. лучше по их reference ссылкам походить и поискать в старых пейперах то, что сейчас называется geometrical heirarchial multigrid — это очень просто реализуется и работает очень эффективно, хоть и не слишком здорово масштабируется на сложные случаи. я вот делал сравнение одной итерации обычного верле в условиях очень большой гравитации:
Изображение
со своим multigrid в тех же условиях:
Изображение

#41
6:16, 31 янв. 2018

Suslik
> если тебе нужно cloth dynamics, то не парь людям мозг, а так и скажи. cloth
> dynamics никто уже давным-давно явными методами интегрирования не решает. там
> тащат multigrid солверы. короче мне лень искать конкретные пейперы, потому что
> все современные по запросу "cloth multigrid simulation" ведут на слишком
> продвинутые и сложные алгоритмы, с которых лучше не начинать. лучше по их
> reference ссылкам походить и поискать в старых пейперах то, что сейчас
> называется geometrical heirarchial multigrid — это очень просто реализуется и
> работает очень эффективно, хоть и не слишком здорово масштабируется на сложные
> случаи.

Не явные методы это не очень физический, и не годиться для реальных расчётов в реальном мире! Или годиться?


P.S : В основном RK4 мне нужен для стабилизации квадрокоптера, то бишь у нас есть квадрокоптер с обратной связю. Он посылает данные с датчиков (гироскопа, акселерометера и.т.д ) на компьютер, а компютер на основе этих даных должен проинтегрировать ориентацию,позицию, и.т.д квадрокоптера , и понять что и как делает квадрокоптер. После чего компютер  в ответ должен  послать корктирущий сигнал который должен дать  квадрокоптеру инструцию как литеть в точку , которую мы ему задали ! И всё это должно работать без ИК-камер.
А simulation cloth  это уже второстипено!

#42
6:24, 31 янв. 2018

werasaimon
> Не явные методы это не очень физический, и не годиться для реальных расчётов в
> реальном мире! Или годиться?
сам ты для расчётов не годишься.

#43
21:40, 31 янв. 2018

Suslik
> сам ты для расчётов не годишься
Но если годиться то это замечательно, просто я думал что это своего рода хак ! Видь учебниках физики этих методов нету !


P.S: метод верле не всегда годиться для реальных росчетов в физике . Ну собственно также как метод ейлера и как любой другой метод !

#44
22:52, 31 янв. 2018

werasaimon
> В основном RK4 мне нужен для стабилизации квадрокоптера, то бишь у нас есть
> квадрокоптер с обратной связю. Он посылает данные с датчиков (гироскопа,
> акселерометера и.т.д ) на компьютер, а компютер на основе этих даных должен
> проинтегрировать ориентацию,позицию, и.т.д квадрокоптера , и понять что и как
> делает квадрокоптер
лол, что? открой для себя https://en.wikipedia.org/wiki/Kalman_filter

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумФизика

Тема в архиве.