DDecayMarsh
Сценарии

Сценарии работы с кодом · Шаги затухания Рунге–Кутты

03
Вокруг ваших задач

Конкретная отправная точка

Проинтегрируйте скалярное экспоненциальное затухание не более чем 1000 классическими шагами Рунге–Кутты при конечных ограниченных данных. Проверьте ноль шагов и нулевую скорость, отклоняя отрицательную скорость или шаг времени и их произведение выше единицы.

01

Откройте контекст

Выберите папку проекта и обозначьте нужные файлы или поведение.

02

Опишите изменение

Укажите входные данные, ожидаемый результат и границы, которые нужно сохранить.

03

Изучите работу

Проверьте предлагаемые изменения и команды, прежде чем полагаться на результат.

04

Проверьте результат

Сравните фактическое поведение с ожидаемым. Если проверка не проходит, разберитесь в причине перед следующими изменениями.

Шаги затухания Рунге–Кутты

Конкретная отправная точка
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

Пример — отправная точка для реального проекта, а не утверждение, что сгенерированный код уже протестирован. Адаптируйте пути, зависимости и ожидаемое поведение к своему приложению.

Рабочая среда с ИИ для кода

Здесь начинается ваше следующее изменение.

Скачать для Windows ↗