Python кривой_подход ODE - PullRequest
       70

Python кривой_подход ODE

0 голосов
/ 23 апреля 2020

Я пытаюсь использовать Curve_Fitting для оценки двух параметров ka и kd для COUPLED ODE . Я искал в Интернете и узнал, как использовать кривую подгонку с одним ODE, но не с сопряженным ODE. Я использовал приведенный ниже код, который может соответствовать только одному ODE, а не обоим.

dcdt = (Q Cin-Q c -ka c A + kd A M) / V

dMdt = ka c - kd M

У меня есть данные эксперимента c и M. И Q , A, V, Cin известны как постоянные.

c=[0, 1.05029793, 1.66818055, 2.090249,   2.37855925, 2.5755008,2.71002935, 2.80192429, 2.86469674, 2.90757582, 2.93686608, 2.95687391,2.97054104, 2.97987688, 2.9862540, 2.99061031, 2.99358599, 2.9956186, 2.99700712, 2.9979556, 2.99860346, 2.99904603, 2.99934838, 2.99955486,2.99969599]
M=[0, 2.66825076, 4.67485257, 6.0455401,  6.98184142, 7.62141856,8.05830652, 8.3567397,  8.56059603, 8.69984807, 8.7949696,  8.85994594,8.90433061, 8.93464912, 8.95535943, 8.96950652, 8.97917001, 8.98577135, 8.99028047, 8.99336063, 8.99546483, 8.99690201, 8.99788384, 8.99855439, 8.99901269]
Q=2
V=10
A=5
Cin=3



from scipy.optimize import curve_fit
def func_fit(t,ka,kd):
    def model(z,t):
        c = z[0]
        M = z[1]
        dcdt = (Q*Cin-Q*c-ka*c*A + kd*A*M)/V
        dMdt = ka*c - kd*M
        dzdt = [dcdt,dMdt]
        return dzdt
    z0 = [0,0]
    z = odeint(model,z0,t)
    return z[:,0]
t = np.linspace(0,120,25)
k_fit, kcov = curve_fit(func_fit,t,c, p0=[1,1])
ka=k_fit[0]
kd=k_fit[1]
z0 = [0,0]
z1=odeint(model,z0,t)

Не могли бы вы помочь мне изменить мой ODE curve_fit на связанный ODE curve_fit? Спасибо.

...