scipy.integrate.

RK45#

класс scipy.integrate.RK45(fun, t0, y0, t_bound, max_step=inf, rtol=0.001, atol=1e-06, векторизованный=False, first_step=None, **лишний)[источник]#

Явный метод Рунге-Кутты порядка 5(4).

Используется пара формул Дормана-Принса [1]. Ошибка контролируется с предположением точности метода четвертого порядка, но шаги выполняются с использованием формулы пятого порядка точности (выполняется локальная экстраполяция). Для плотного вывода используется полином четвертой степени [2].

Может применяться в комплексной области.

Параметры:
funcallable

Правая часть системы. Сигнатура вызова: fun(t, y). Здесь t является скаляром, и есть два варианта для ndarray y: Он может иметь форму (n,); тогда fun должен возвращать array_like с формой (n,). Альтернативно может иметь форму (n, k); тогда fun должен возвращать array_like с формой (n, k), т.е., каждый столбец соответствует одному столбцу в y. Выбор между двумя вариантами определяется векторизованный аргумент (см. ниже).

t0float

Начальное время.

y0array_like, форма (n,)

Начальное состояние.

t_boundfloat

Граничное время - интегрирование не продолжится за его пределы. Оно также определяет направление интегрирования.

first_stepfloat или None, опционально

Начальный размер шага. По умолчанию None что означает, что алгоритм должен выбрать.

max_stepfloat, опционально

Максимально допустимый размер шага. По умолчанию np.inf, т.е. размер шага не ограничен и определяется исключительно решателем.

rtol, atolfloat и array_like, опционально

Относительные и абсолютные допуски. Решатель поддерживает оценки локальной ошибки меньше, чем atol + rtol * abs(y). Здесь rtol управляет относительной точностью (количеством верных цифр), в то время как atol управляет абсолютной точностью (количество верных десятичных знаков). Для достижения желаемой rtol, установите atol быть меньше наименьшего значения, которое можно ожидать от rtol * abs(y) так что rtol доминирует над допустимой ошибкой. Если atol больше, чем rtol * abs(y) количество верных цифр не гарантируется. И наоборот, для достижения желаемого atol set rtol такой, что rtol * abs(y) всегда меньше чем atol. Если компоненты y имеют разные масштабы, может быть полезно установить разные atol значения для различных компонентов, передавая array_like с формой (n,) для atol. Значения по умолчанию: 1e-3 для rtol и 1e-6 для atol.

векторизованныйbool, необязательно

Определяет ли fun реализовано векторизованным способом. По умолчанию False.

Атрибуты:
nint

Количество уравнений.

statusstring

Текущий статус решателя: ‘running’, ‘finished’ или ‘failed’.

t_boundfloat

Граничное время.

направлениеfloat

Направление интегрирования: +1 или -1.

tfloat

Текущее время.

yndarray

Текущее состояние.

t_oldfloat

Предыдущее время. None, если шаги ещё не были сделаны.

шаг_размераfloat

Размер последнего успешного шага. None, если шаги ещё не выполнялись.

nfevint

Количество вычислений правой части системы.

njevint

Количество вычислений якобиана. Всегда равно 0 для этого решателя, так как он не использует якобиан.

nluint

Количество LU-разложений. Всегда равно 0 для этого решателя.

Методы

dense_output()

Вычислить локальный интерполянт на последнем успешном шаге.

step()

Выполнить один шаг интегрирования.

Ссылки

[1]

J. R. Dormand, P. J. Prince, "Семейство вложенных формул Рунге-Кутты", Журнал вычислительной и прикладной математики, Том 6, № 1, стр. 19-26, 1980.

[2]

L. W. Shampine, «Some Practical Runge-Kutta Formulas», Mathematics of Computation, Vol. 46, No. 173, pp. 135-150, 1986.