Массовая пружинная система с методом Верле (1d) - PullRequest
0 голосов
/ 10 мая 2019

Для домашней работы мне нужно сделать систему массовых пружин (в конце концов, 2d), но я сначала пробую 1d).Но я не могу заставить его работать, пожалуйста, помогите мне.Мы должны использовать метод Verlet, и мы должны реализовать следующую функцию в Python.Мой код неверен?И как я могу сделать это лучше всего?

Формула: https://drive.google.com/open?id=1Oi4MVOyTPvMLqZ35zFtQTgPlxNNrCHZy

def verlet():
    result = 2 * py[0]  # 2y(ti)
    result -= py_prev[0]    # - y(ti - dt)
    result += (GRAVITATION + (-Ks * (py[0] - py_prev[0]))) / MASS
    py_prev[0] = py[0]
    py[0] = result/20

1 Ответ

0 голосов
/ 13 мая 2019

Как вы определили переменные? Не могли бы вы включить всю программу?

Если определены все переменные, код запускается.

Глядя на ваш код, я не вижу, как вы вычислили последний член в формуле.

result += (GRAVITATION + (-Ks * (py[0] - py_prev[0]))) / MASS

Вам необходимо определить разницу во времени между двумя точками. (Это не py [0] - py_prev [0], это разница в высоте). Я думаю, что последний член в формуле можно рассчитать так:

result -= delta_t**2 * py[0]

Позже вам понадобится использовать цикл for (или, что еще лучше, массивы, но цикл for проще), чтобы сохранить положение осциллятора в каждый момент времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...