Откройте контекст
Выберите папку проекта и обозначьте нужные файлы или поведение.
Проинтегрируйте скалярное экспоненциальное затухание не более чем 1000 классическими шагами Рунге–Кутты при конечных ограниченных данных. Проверьте ноль шагов и нулевую скорость, отклоняя отрицательную скорость или шаг времени и их произведение выше единицы.
Выберите папку проекта и обозначьте нужные файлы или поведение.
Укажите входные данные, ожидаемый результат и границы, которые нужно сохранить.
Проверьте предлагаемые изменения и команды, прежде чем полагаться на результат.
Сравните фактическое поведение с ожидаемым. Если проверка не проходит, разберитесь в причине перед следующими изменениями.
def decay_steps(initial, rate, dt, steps):
if any(type(v) not in (int, float) for v in (initial, rate, dt)):
raise ValueError("decay.numeric")
if not -10**6 <= initial <= 10**6 or not 0 <= rate <= 1000 or not 0 <= dt <= 1 or rate * dt > 1:
raise ValueError("decay.range")
if type(steps) is not int or not 0 <= steps <= 1000:
raise ValueError("decay.steps")
y = float(initial)
for _ in range(steps):
k1 = -rate * y
k2 = -rate * (y + dt*k1/2)
k3 = -rate * (y + dt*k2/2)
k4 = -rate * (y + dt*k3)
y += dt*(k1 + 2*k2 + 2*k3 + k4)/6
return yПример — отправная точка для реального проекта, а не утверждение, что сгенерированный код уже протестирован. Адаптируйте пути, зависимости и ожидаемое поведение к своему приложению.