Radau#
- класс scipy.integrate.Radau(fun, t0, y0, t_bound, max_step=inf, rtol=0.001, atol=1e-06, jac=None, jac_sparsity=None, векторизованный=False, first_step=None, **лишний)[источник]#
Неявный метод Рунге-Кутты семейства Радо IIA пятого порядка.
Реализация следует [1]. Ошибка контролируется с помощью встроенной формулы третьего порядка точности. Для плотного вывода используется кубический полином, удовлетворяющий условиям коллокации.
- Параметры:
- funcallable
Правая часть системы: производная состояния по времени
yв моментt. Сигнатура вызова:fun(t, y), гдеtявляется скаляром иyявляется ndarray сlen(y) = len(y0).funдолжен возвращать массив той же формы, что и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.- jac{None, array_like, sparse_matrix, callable}, optional
Матрица Якоби правой части системы относительно y, требуемая этим методом. Матрица Якоби имеет форму (n, n) и её элемент (i, j) равен
d f_i / d y_j. Существует три способа определения якобиана:Если array_like или sparse_matrix, предполагается, что матрица Якоби постоянна.
Если вызываемый объект, предполагается, что якобиан зависит от обоих t и y; он будет вызван как
jac(t, y)по мере необходимости. Для методов 'Radau' и 'BDF' возвращаемое значение может быть разреженной матрицей.Если None (по умолчанию), Якобиан будет аппроксимирован конечными разностями.
Обычно рекомендуется предоставлять Якобиан, а не полагаться на аппроксимацию конечными разностями.
- jac_sparsity{None, array_like, sparse matrix}, опционально
Определяет структуру разреженности матрицы Якоби для конечно-разностной аппроксимации. Её форма должна быть (n, n). Этот аргумент игнорируется, если jac не является None. Если матрица Якоби имеет только несколько ненулевых элементов в каждый строке, предоставление структуры разреженности значительно ускорит вычисления [2]. Нулевой элемент означает, что соответствующий элемент в матрице Якоби всегда равен нулю. Если None (по умолчанию), матрица Якоби предполагается плотной.
- векторизованныйbool, необязательно
Определяет ли fun может вызываться векторизованно. По умолчанию False.
Если
vectorizedравно False, fun всегда будет вызываться сyформы(n,), гдеn = len(y0).Если
vectorizedравно True, fun может вызываться сyформы(n, k), гдеkявляется целым числом. В этом случае, fun должен вести себя таким образом, чтоfun(t, y)[:, i] == fun(t, y[:, i])(т.е. каждый столбец возвращаемого массива является производной по времени состояния, соответствующего столбцуy).Установка
vectorized=Trueпозволяет быстрее аппроксимировать Якобиан методом конечных разностей, но может привести к более медленному выполнению в некоторых случаях (например, малыйlen(y0)).
- Атрибуты:
- nint
Количество уравнений.
- statusstring
Текущий статус решателя: ‘running’, ‘finished’ или ‘failed’.
- t_boundfloat
Граничное время.
- направлениеfloat
Направление интегрирования: +1 или -1.
- tfloat
Текущее время.
- yndarray
Текущее состояние.
- t_oldfloat
Предыдущее время. None, если шаги ещё не были сделаны.
- шаг_размераfloat
Размер последнего успешного шага. None, если шаги ещё не выполнялись.
- nfevint
Количество вычислений правой части.
- njevint
Количество вычислений якобиана.
- nluint
Количество LU-разложений.
Методы
Вычислить локальный интерполянт на последнем успешном шаге.
step()Выполнить один шаг интегрирования.
Ссылки
[1]E. Hairer, G. Wanner, "Решение обыкновенных дифференциальных уравнений II: Жесткие и дифференциально-алгебраические задачи", разд. IV.8.
[2]A. Curtis, M. J. D. Powell, и J. Reid, “On the estimation of sparse Jacobian matrices”, Journal of the Institute of Mathematics and its Applications, 13, pp. 117-120, 1974.