C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Есть тут математики?, Как выглядит уравнение кругов на воде?
DVD
Отправлено: 21.11.2003, 13:49


Дежурный стрелочник

Группа: Участник
Сообщений: 33



Как выглядит уравнение волн (круговых) на воде? Как если в воду бросаешь камень.
Артем
Отправлено: 21.11.2003, 15:26


Не зарегистрирован







Это не математическая проблема, в гидравлике есть уравнение Новье-Стокса, которое надо разрешить для этого случая, конечно его на память не помню, но если интересно могу по рыться в литературе.
DVD
  Отправлено: 22.11.2003, 05:55


Дежурный стрелочник

Группа: Участник
Сообщений: 33



То, что не в математике дело я и сам знаю, незря 5 курс физмата. НО я имел в виду решение или математический вид. Очень часто в прогах встречаю эту реализацию, а мне на спецкурсе сказали сделать падающие в воду капли, а для этого нужно решение уравнения.

Если найдешь литеретуру, скажи данные, пожалуйста.

Отредактировано DVD — 22/11/2003, 14:58
Георгий
Отправлено: 22.11.2003, 10:46


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



лет 6 или 7 тому назад меня просили перенести с Basic на C одну програмку, которая похожа на то, что тебе надо.

http://georgiestar.pisem.net/net.rar

как она работает — в смысле физ модели — не знаю, но визуально на экране показывается нечто вроде колебаний поверхности воды.
Aptem
Отправлено: 22.11.2003, 20:19


Мастер участка

Группа: Участник
Сообщений: 349



Я где-то читал, что это очень сложные дифференциальные уравнения !
Waters
Отправлено: 23.11.2003, 18:08


Ученик-кочегар

Группа: Участник
Сообщений: 7



Реализация алгоритма 3D воды...

wbr.
Мансур
Отправлено: 27.11.2003, 16:03


Не зарегистрирован







Тебе не надо копаться в дифер уравнений поверхностных волн.
Тебе надо взять некоторую синусоиды с уменшением амплитуды експоненциалным образом. и создать эффект бегущей волны.
Потому что элементарное решение той системы имеет такой вид
exp
Отправлено: 27.11.2003, 21:36


Мастер участка

Группа: Участник
Сообщений: 304



Нет в дифурах все-таки придется покопаться.

Итак. Волновое уравнение:

d^2 F d^2 F d^2 F
_____= _____ + _____ (I)
dt^2 dx^2 dy^2


Заменим в этом ур-нии отношение бесконечно малых на отношени конечных приращений.

d^2 F
_____= (Ft+1-2*Ft+Ft-1)/(dt)^2? где Ft+1, Ft, Ft-1 — значения функции
dt^2 в данной точке в моменты времени
t+1,t,t-1. dt — разность по времени между t и t+1 или t и t-1.
Записав это для производных по х и у, получаем

(Ft+1-2*Ft+Ft-1)/(dt)^2=(Fx+1-2*Fx+Fx-1)/(dx)^2+(Ft+1-2*Fy+Fy-1)/(dy)^2

Итак, зная значения функции на текущем и предыдущем временном слое, ты можешь вычислить значения ф-ции на "будущем" слое

Неболбшая иллюстрация
Данные, необходимые для вычисления F(x,y,t+1)
| Y
| F(x,y+1,t)
| F(x,y,t) F(x,y,t) F(x+1,y,t)
| F(x,y+1,t)
|
|
| текущий момент времени t
|________________________
X
Также нужно F(x,y,t-1)

Теперь ближе к программированию.
Тебе понадобятся 3 матрицы F1,F2 — предыдущий и текущий временные слои и F3 — "будущий" временной слой. Его ищем.

Размеры матциц — количество точек для просчета функции F
Пусть по х это кол-во Х, а по у — У.
Тогда пробежав от 2-й до (Х-1) точки по х и от 2-й до (У-1) точки по у
ты найдешь значения F в момент времени t+1.
Осталось узнать, что творится на краях. Это определишь из своих конкретных краевых условий. Но так как наша водная гладь ничем не ограничена, то к точкам по границе также можно применить уравнение (I).

Когда ты определил значения F3 по границе, можешь приступать к вычислению значений на следующем временном слое, так как только что полученная матрица F3 становится текущей, а та, что была текущей, "стареет".

И последнее маленькое замечание. Уравнение (I) описывает гармониеские колебания, т.е предполагается, что колеблющаяся жидкость не имеет вязкости и не отдает энергию своих колебаний наружу, равно как и не принимает извне. Тогда непрерывное падение капель разболтает схему. Получится "буря в стакане". Чтоб этого не случилось тебе придется решать уравнение затухающих колебаний, где энергия колебаний расходуется на преодоление сопротивления вязкой среды.
Вооо-ооо..... вроде всё.

Метод Мансура пригодился бы в одномерном случае. И хорошо, что дифур аналитически решается. А если он не имеет решений среди элементарных функций? Тогда без разностных методов не обойтись.

З.Ы. DVD, а разве у вас вычмата не было?

Отредактировано exp — 27/11/2003, 22:39
DVD
Отправлено: 05.12.2003, 14:45


Дежурный стрелочник

Группа: Участник
Сообщений: 33



2exp:
У нас был предмет "Компьютерное моделирование в физике", каким г-м мы там не занимались, а вот таких реальных вещей, как круги на воде не делали. Слушай, можешь на мыло сбросить эти уравнения, принцип-то мне понятен, но не могу разобрать где-что. Может сбросишь в Маткаде или в Ворде, или картинкой?
exp
Отправлено: 08.12.2003, 00:54


Мастер участка

Группа: Участник
Сообщений: 304



Хорошо. Только скажи, насчет чего писать. И мыло твоё тоже не помешало бы.


Вернуться в Вопросы программирования в C++Builder