def sim_continuous(self, x0, u, t):
    '\tsimulates the nonlinear continuous model with given input vector\n\t\t\tby numerical integration using 6th order Runge Kutta method\n\t\t\tx0 is the initial state of size 6x1\n\t\t\tu is the input vector of size 2xn\n\t\t\tt is the time vector of size 1x(n+1)\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)):
        x[:, ids] = self._integrate(x[:, (ids - 1)], u[:, (ids - 1)], t[(ids - 1)], t[ids])
        dxdt[:, ids] = self._diffequation(None, x[:, ids], u[:, (ids - 1)])
    return (x, dxdt)
simulates the nonlinear continuous model with given input vector
by numerical integration using 6th order Runge Kutta method
x0 is the initial state of size 6x1
u is the input vector of size 2xn
t is the time vector of size 1x(n+1)
def sim_continuous(self, x0, u, t):
    '\tsimulates the nonlinear continuous model with given input vector\n\t\t\tby numerical integration using 6th order Runge Kutta method\n\t\t\tx0 is the initial state of size 6x1\n\t\t\tu is the input vector of size 2xn\n\t\t\tt is the time vector of size 1x(n+1)\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)):
        x[:, ids] = self._integrate(x[:, (ids - 1)], u[:, (ids - 1)], t[(ids - 1)], t[ids])
        dxdt[:, ids] = self._diffequation(None, x[:, ids], u[:, (ids - 1)])
    return (x, dxdt)