我的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
参数。