Newer
Older
import numpy as np
def solve_discrete_difference_eqns(discrete_state_model, x0, u_fcn, DT, T):
"""
:param discrete_state_model:
:param x0: m, |
:param u_fcn: (x_t, t) -> u_t \in n, |
:param DT: sampling time
:param T: final time, steps made for t < T
:return:
x: m, k | ith column is state at t = i*DT
u: n, k | ith column is control at t
"""
m, n = discrete_state_model.get_mn()
t = np.arange(0, T, DT)
x = np.zeros((m, t.size))
u = np.zeros((n, t.size))
x[:, 0] = x0.copy()
for i in range(0, t.size-1):
discrete_state_model.update_AB(x[:, i])
u[:, i] = u_fcn(x[:, i], i*DT)
x[:, i+1] = discrete_state_model.step(x[:, i], u[:, i])
return x, u