Согласно Эрвину Шрёдингеру («Что такое жизнь?»), Диффузия может быть полностью объяснена случайным движением частиц. Я хочу проверить это сам, создав программу, которая создает временную визуализацию диффузии "молекул газа" в закрытом контейнере. Начальные условия будут иметь два раздела, один с низким и один с высокой концентрацией. После t0 перегородка удаляется, и газу позволяют диффундировать. Единственный механизм, который я хочу использовать, - это добавление случайных векторов смещения к каждой молекуле. Начальные условия будут выглядеть следующим образом.
Часть проблемы, которую я не понимаю, состоит в том, как создать простое отражение типа бильярда, когда молекула попадает на ограничивающие поверхности. Я предполагаю простые симметричные отражения (угол in = угол вне на границах). Я вообще не запускал код, потому что я не знаю, как справиться с этой частью, хотя я знаю, как сделать остальную часть. Я знаю, что это больше математический вопрос, но как я могу создать эти граничные условия в Python? В идеале мне бы хотелось запрограммировать эту функцию самостоятельно, чтобы я мог ее понять, а не использовать предварительно созданный пакет, который мог бы это сделать. Это то, что я ищу, для любой данной молекулы.
В конечном счете, все, что мне действительно нужно, это следующее: учитывая начальное местоположение (x1, y2), векторную величину v, угол тета, а также размер и местоположение прямоугольника, каково окончательное положение покоя молекулы (x2, у2).