Есть ли способ настроить и решить множественную числовую интеграцию в Scipy, как в Mathematica? - PullRequest
0 голосов
/ 27 октября 2019

Я хотел бы решить следующие формулы численно в Python:

enter image description here

В Mathematica вы можете ввести несколько дифференциальных уравнений и решить их вто же время. Есть ли способ сделать подобное с Scipy?

edit: да, я уже посмотрел на scipy.integrate.odeint, но я все еще не уверен, как решить несколько уравнений, которые коррелируют друг с другомв то же время. У кого-нибудь есть предложения по этому поводу?

Ответы [ 2 ]

1 голос
/ 27 октября 2019

В конце концов я понял сам и записываю для других людей, которые могут быть невежественны, как я;в odeint вы задаете три параметра model, y и t, где model - это функция, которая принимает значения y и t, затем возвращает dydt, y - начальное значениеy, а t - это переменная, которую вы пытаетесь взять целочисленной. Если у вас есть несколько дифференциальных уравнений, которые зависят друг от друга, вы можете просто передать все их в odeint. В моем случае,

t = np.linspace(0, 20) # range of t
y0 = [No_0, Na_0, Ni_0, Nn_0] # initial condition for each Ns
def model(y, t):
    No, Na, Ni, Nn = y
    dNodt = -k_oa * No
    dNadt = k_oa * No - k_ai * Na
    dNidt = k_ai * Na - k_in * Ni
    dNndt = k_in * Ni
    return [dNodt, dNadt, dNidt, dNndt]
y = odeint(model, y0, t)

Вы можете определить несколько дифференциальных уравнений, которые вы хотите решить, в пределах определяемой вами модели и передать odeint вместе с начальными значениями для всех видов.

0 голосов
/ 27 октября 2019

Имейте лут в пакете интеграции SciPy:

https://docs.scipy.org/doc/scipy/reference/integrate.html

специально на odeint для решения систем ODE:

https://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.odeint.html#scipy.integrate.odeint

...