Как я могу получить больше значений переменной, чем мое пространство строк при решении ODE в Python?(РЕДАКТИРОВАТЬ) - PullRequest
0 голосов
/ 22 января 2019

Чтобы легче было проверить некоторые из моих результатов, я использовал лист Excel для создания нескольких диаграмм. Однако я заметил кое-что действительно неловкое.

РЕДАКТИРОВАТЬ:

Итак, давайте представим проблему по-другому, я нашел что-то, что представляет то, чего я не понимаю в моем коде.

import numpy as np
from scipy.integrate import odeint

A = []


def F(y, z):
    global A
    a = y[0]
    b = y[1]

    A.append(a)

    return [a, b]


y0 = [1, 1]
z = np.linspace(0, 1, 101)
y = odeint(F, y0, z)
print(len(z), len(A))

Вопрос в том, почему длина z и A различна (например, 101 и 55)?

Для меня, во время решения, a должен меняться len(z) раз и поэтому A. Так что, похоже, Линспейс ничего не делает для решения уравнений. Или, возможно, я не понял использование linspace в Python.

1 Ответ

0 голосов
/ 22 января 2019

Решение через odeint использует неявный линейный многошаговый метод с адаптивным внутренним пошаговым перемещением.Это реализуется с помощью схемы предиктор-корректор PECE.E там означает «оценка».Это означает, что на каждом шаге внутренней интеграции функция ODE вызывается дважды.Вы можете получить меньше внутренних шагов, чем во входном временном списке, есть записи, выходной массив интерполируется из внутренних временных шагов, так что вы можете иметь несколько выходных значений для каждого внутреннего шага.Но возможен и другой крайний случай: для достижения требуемых допусков внутренний размер шага настолько мал, что для одного шага времени вывода требуется несколько внутренних шагов.

Если бы проблема была более жесткой, было бы еще больше вызововпериодически для числового приближения якобиана и, возможно, нескольких вызовов на шаг шага корректора, подобного ньютону, или просто нескольких простых шагов коррекции, которые затем называются PE (CE) d .


Для сравнения рассмотрим явный метод RK4.Там у вас есть 4 оценки функции ODE за шаг по времени.Метод Dormand-Prince ode45 имеет 6 + 1 оценок на шаг по времени, однако там внутренние временные шаги не должны соответствовать списку временных выборок, передаваемых методу, запрошенные выходные выборки интерполируются из внутренних шагов.

...