我目前正在尝试将我的代码从MATLAB转换为Python。我遇到的问题是将ODE翻译成Python。我在网上看到我可以使用scipy.integrate.ode / scipy.integrate.odeint。不幸的是,我无法按照我希望的方式获得它。
我的MATLAB代码如下:
function [W] = PSFFA_MM1 (arrivalRate, serviceRate)
tspan = 1:1:96;
ic = 0;
opts = odeset('RelTol',1e-2,'AbsTol',1e-4);
[t,x] = ode23(@(t,x) myode(t,x,arrivalRate, serviceRate), tspan,ic,opts);
function dxdt = myode(t,x,lambda, MU)
l = interp1(lambda, t);
mu = interp1(MU, t);
dxdt = -mu*(x/(x+1)) +l;
end
W = x./arrivalRate;
end
我的Python代码如下:
def interpolation(rates, point):
a = math.floor(point)
b = math.ceil(point)
c = point
return rates(a) + (c-a) / (b-a) * (rates(b) - rates(a))
def myode(t,x,lamda, MU):
l = interpolation(lamda, t)
mu = interpolation(MU,t)
dxdt = -mu * (x / (x+1)) + l
return dxdt
def PSFFA_MM1(arrivalRate, serviceRate):
timeSpan = np.linspace(1,1,96)
c = 0
x = scipy.integrate.odeint(myode(t,x,arrivalRate,serviceRate))
x = odeint(myode, ic, timeSpan)
W = x/arrivalRate
return W here
我正在努力解决的一点是,在MATLAB中,没有必要明确指定'x',而必须在Python中专门指定。
我知道确实没有具体的问题,但我希望有人可以帮助我。