用Python反向计算矩阵

时间:2019-01-30 06:43:08

标签: python matrix

我需要对矩阵求逆,由下式给出:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

在给定rotation=np.matrix([[1, 0, 0, 0], [0, math.cos(4*math.radians(a)), math.sin(4*math.radians(a)), 0], [0, math.sin(4 * math.radians(a)), -math.cos(4 * math.radians(a)), 0], [0, 0, 0, -1]]) a=60 X=np.matrix('1 ;-1 ;0 ;0') a1=rotation*X a1=[[ 1. ] [ 0.5 ] [ 0.8660254] [ 0. ]] a的情况下,是否可以进行反向计算以找到rotation的值?

谢谢。

1 个答案:

答案 0 :(得分:1)

如果我猜对了,你的意思是:

首先,您的矩阵不是rotation matrix;标志在错误的地方...

然后我将忽略4的因数;您可以自己重新插入。

import numpy as np
from numpy.linalg import norm
from numpy import dot, cos, sin, arccos

x = np.array((1, -1, 0, 0))
y = np.array((1, 0.5, 0.8660254, 0))

# just considering indices 1 and 2
cos_a = dot(x[1:3], y[1:3])/(norm(x[1:3]) * norm(y[1:3]))

a_rad = arccos(cos_a)
a_deg = np.rad2deg(a_rad)

print(a_deg)  # 120

,并检查(正确的)溴代确实复制了y

rot = np.array((
    (1, 0, 0 , 0),
    (0, cos(a_rad), -sin(a_rad), 0),
    (0, sin(a_rad), cos(a_rad), 0),
    (0, 0, 0, 1))
)

print(dot(rot, x))  # [ 1.         0.5       -0.8660254  0.       ]