def sim_discrete(self, x0, u, Ts):
    '\tsimulates a continuously linearized discrete model\n\t\t\tu is the input vector of size 2xn\n\t\t\tTs is the sampling time\n\t\t'
    n_steps = u.shape[1]
    x = np.zeros([6, (n_steps + 1)])
    dxdt = np.zeros([6, (n_steps + 1)])
    dxdt[:, 0] = self._diffequation(None, x0, [0, 0])
    x[:, 0] = x0
    for ids in range(1, (n_steps + 1)):
        g = self._diffequation(None, x[:, (ids - 1)], u[:, (ids - 1)]).reshape((- 1))
        x[:, ids] = (x[:, (ids - 1)] + (g * Ts))
        dxdt[:, ids] = self._diffequation(None, x[:, ids], u[:, (ids - 1)])
    return (x, dxdt)
simulates a continuously linearized discrete model
u is the input vector of size 2xn
Ts is the sampling time
def sim_discrete(self, x0, u, Ts):
    '\tsimulates a continuously linearized discrete model\n\t\t\tu is the input vector of size 2xn\n\t\t\tTs is the sampling time\n\t\t'
    n_steps = u.shape[1]
    x = np.zeros([6, (n_steps + 1)])
    dxdt = np.zeros([6, (n_steps + 1)])
    dxdt[:, 0] = self._diffequation(None, x0, [0, 0])
    x[:, 0] = x0
    for ids in range(1, (n_steps + 1)):
        g = self._diffequation(None, x[:, (ids - 1)], u[:, (ids - 1)]).reshape((- 1))
        x[:, ids] = (x[:, (ids - 1)] + (g * Ts))
        dxdt[:, ids] = self._diffequation(None, x[:, ids], u[:, (ids - 1)])
    return (x, dxdt)