Change of basis in numpy



给定两个基矩阵basis_oldbasis_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的基础。

  1. w必须是线性独立。这意味着X1 W1 X2 W2 X3 W3 = 0的唯一解决方案应为X1 = X2 = X3 = 0。但是,在您的情况下,您可以验证x1 = 1,x2 = -2,x3 = 1是另一个解决方案。因此,您的basis_new无效。

  2. 矩阵W = [W1,W2,W3]必须可逆。

  3. 对于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)

相关内容

  • 没有找到相关文章

最新更新