Python3 ODE求解器:MATLAB到Python interp1d

时间:2017-11-15 21:40:43

标签: python matlab interpolation

我的MATLAB代码如下:

options = odeset('RelTol', 1e-3, 'AbsTol',[1e-3 1e-3]);
[Tx,X]  = ode45(@(t,x) stateEq(t,x,u1,Tu), [t0 tf], initx, options);

我在stateEq中的定义:

function dx = stateEq(t,x,u1,Tu)

    global E d G k b

    dx = zeros(2,1);
    u1 = interp1(Tu,u1,t);    % Interploate the control at time t

我试图让它在python3中运行:

Tx, X = integrate.ode(stateEq(t,x,u1,Tu,G)).set_integrator('dopri5').set_initial_value(t0Range, initx, 'rtol', 'atol')

其中:

def stateEq(t,x,u1,Tu,G):

    import numpy as np
    import scipy as sp
    from scipy import interpolate

    #global E d G k b
    dx = []
    x  = np.array(x)

    #print(x)
    u1 = np.interp(Tu,u1,t)

问题在于:

在MATLAB中,这个变量t使用@(t,x)中的命令ode45,但是如何在python中定义它?因为现在interp1d失败了,因为没有定义的t参数。

0 个答案:

没有答案