给定两个基矩阵basis_old
和 basis_new
在numpy中,库中的某个地方是否有一个函数以获取转换矩阵以将 basis_old
中的vector vec
转换为 basis_new
中的表示形式?
例如,如果我在标准基础[1,0,0], [0,1,0], [0,0,1]
中有一个向量vec = [1,2,3]
,则如何将其转换为另一个基础,例如,
e1 = [1 0 0]
e2 = [0 0 1]
e3 = [0 1 0]
basis_new = np.array([e1, e2, e3])
# I want something like this
vec_new = np.linalg.change_of_basis(vec_old, basis_old, basis_new)
# Or this:
transformation_matrix = np.linalg.basis_change(basis_old, basis_new)
编辑:更改基础_new为线性独立
请记住,它对一组向量W1,W2,W3是R3的基础。
-
w必须是线性独立。这意味着X1 W1 X2 W2 X3 W3 = 0的唯一解决方案应为X1 = X2 = X3 = 0。但是,在您的情况下,您可以验证x1 = 1,x2 = -2,x3 = 1是另一个解决方案。因此,您的
basis_new
无效。 -
矩阵W = [W1,W2,W3]必须可逆。
-
对于R3中的每个向量
一旦您确定了这些要求,就可以通过简单的矩阵乘法来计算新的坐标。假设您要表示Vector V为V = C1 W1 C2 W2 C3 W3。要以矩阵形式写这篇文章,v = w c。要获得C
c = w^{ - 1} v
在numpy中,您将其写为
vec_new = np.linalg.inv(np.column_stack((w1, w2, w3))).dot(vec_old)