In [213]:
%pylab inline


Populating the interactive namespace from numpy and matplotlib

In [214]:
A = matrix(rand(2,2))
P = matrix(rand(2,2))
P = P + P.T
x = matrix(rand(2,1))

In [215]:
x.T*(P*A + A.T*P)*x


Out[215]:
matrix([[ 4.17896792]])

In [258]:
2*x.T*P*A*x


Out[258]:
matrix([[ 4.17896792]])

In [259]:
x.T*(A.T*P + A.T*P)*x


Out[259]:
matrix([[ 4.17896792]])

In [260]:
dx_dt = A*x
dx_dt


Out[260]:
matrix([[ 0.70725915],
        [ 0.76989361]])

In [261]:
2*A*P


Out[261]:
matrix([[ 3.7914785 ,  3.31305262],
        [ 5.80019386,  4.67048868]])

In [254]:
x1 = matrix([[1],[2]])
dt = 0.0000001
x2 = x1 + A*x1*dt
v1 = x1.T*P*x1
v2 = x2.T*P*x2
(v2 - v1)/ dt


Out[254]:
matrix([[ 38.84245666]])

In [255]:
2*x1.T*P*A*x1


Out[255]:
matrix([[ 38.84245372]])

In [256]:
x1.T*(P*A + A.T*P)*x1


Out[256]:
matrix([[ 38.84245372]])

In [262]:
x1.T*(P*A + P*A)*x1


Out[262]:
matrix([[ 38.84245372]])

In [271]:
eig(P*A + A.T*P)[0]


Out[271]:
array([ 8.68696692, -0.22499974])

In [274]:
eig(P*A + P*A)[0]


Out[274]:
array([ 8.63660639, -0.17463921])

In [268]:
x1.T*(P*A)*x1


Out[268]:
matrix([[ 19.42122686]])

In [269]:
x1.T*(A.T*P)*x1


Out[269]:
matrix([[ 19.42122686]])

In [297]:
eig(A)


Out[297]:
(array([-0.36682519,  1.4711377 ]), matrix([[-0.73331502, -0.60707253],
         [ 0.67988903, -0.79464643]]))

In [298]:
svd(A)


Out[298]:
(matrix([[-0.58197435, -0.81320714],
         [-0.81320714,  0.58197435]]),
 array([ 1.48225679,  0.36407346]),
 matrix([[-0.70244592, -0.71173712],
         [ 0.71173712, -0.70244592]]))

In [295]:
svd(A + A.T)


Out[295]:
(matrix([[-0.64421106, -0.76484777],
         [-0.76484777,  0.64421106]]),
 array([ 2.95064276,  0.74201775]),
 matrix([[-0.64421106, -0.76484777],
         [ 0.76484777, -0.64421106]]))

In [296]:
eig(A)


Out[296]:
(array([-0.36682519,  1.4711377 ]), matrix([[-0.73331502, -0.60707253],
         [ 0.67988903, -0.79464643]]))

In [ ]: