Python, как использовать метод Эйлера с несколькими уравнениями - PullRequest
0 голосов
/ 28 ноября 2018

Мне дали два уравнения: одно для роста здоровых людей в популяции,

dh/dt=-.05*h*s+.0003*h, 

, а другое уравнение для показателя заболеваемости больных

ds/dt=.05*h*s-.01*s. 

. Предположим, чточерез 10 дней после заражения люди умирают.

для начальных переменных h = 9000 и s = 100

с использованием дифференциальных уравнений генерируют цифру, предсказывающую влияние исхода инфекции нанаселение.Было предложено использовать метод Эйлера, как бы я использовал метод Эйлера, используя множественные дифференциальные уравнения?или есть лучший метод, который вы бы предложили, и как бы вы его использовали?

1 Ответ

0 голосов
/ 28 ноября 2018

В Python вы должны использовать, например, scipy.integrate.odeint и вычислять

def odesys(u,t):
    h, s = u
    return [ -.05*h*s+.0003*h, .05*h*s-.01*s]

h0, s0 = 9000, 100
t0, tf = 0, 0.10

t = linspace(t0, tf, 301)
sol = odeint(odesys, [h0, s0], t)
h, s = sol.T
plot(t,h, label="healthy")
plot(t,s, label="sick") 

И если вам нужно использовать Euler, используйте тот же интерфейс, если будет выглядеть как

def odeinteuler(f, y0, tspan):
     y = zeros([len(tspan),len(y0)])
     y[0,:]=y0
     for k in range(1, len(tspan)):
          y[k,:] = y[k-1,:]+(t[k]-t[k-1])*array(f(y[k-1], t[k-1]))
     return y

sol = odeint(odesys, [h0, s0], t)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...