In [2]:
from hypore import *
In [3]:
# create state vector with 4 components and derivatives up to order 2
# and make available in global namespace
xx = gen_state(1,2)
xx.T
Out[3]:
In [4]:
A0 = sp.Matrix([
[1,xdot1]])
A1 = sp.Matrix([
[1,x1]])
A2 = sp.Matrix([
[1,0]])
A0,A1,A2 # A(d/dt) = A0 + A1*d/dt + A2*(d/dt)**2
Out[4]:
In [5]:
# manually
# HrA1 = Hright(A0,A1,A2,beta=1)
# st.rnd_number_rank(HrA1)
In [6]:
beta_ = is_rightinvertible(A0,A1,A2)
if (beta_ != -1):
print("A is right invertible")
In [7]:
beta_
Out[7]:
In [8]:
HrA1 = Hright(A0,A1,A2,beta=beta_)
HrA1inv = sp.simplify(HrA1.inv())
HrA1inv
Out[8]:
In [9]:
IO = sp.Matrix([1,0,0,0])
B_ = HrA1inv*IO
B_
Out[9]:
In [10]:
B0 = st.col_select(B_.T, 0,1).T
B1 = st.col_select(B_.T, 2,3).T
# hyper-regular right inverse of A(d/dt):
B0, B1 # B(d/dt) = B0 + d/dt*B1
Out[10]: