gpt4 book ai didi

python - numpy中基础的变化

转载 作者:行者123 更新时间:2023-12-03 18:45:10 25 4
gpt4 key购买 nike

给定 numpy 中的两个基矩阵 basis_oldbasis_new,库中是否有一个函数可以获取转换矩阵以将 vec 中的向量 basis_old 转换为其在 basis_new 中的表示?

例如,如果我在标准基础 vec = [1,2,3] 中有一个向量 [1,0,0], [0,1,0], [0,0,1] ,如何将其转换为另一个基础,例如,

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)

编辑:将 base_new 更改为线性无关

最佳答案

记住一组向量 w1、w2、w3 作为 R3 的基意味着什么。

  • w 必须是 linearly independent 。这意味着 x1 w1 + x2 w2 + x3 w3 = 0 的唯一解决方案应该是 x1 = x2 = x3 = 0。但在您的情况下,您可以验证 x1 = 1, x2 = -2, x3 = 1 是另一种解决方案.所以你的 basis_new 无效。
  • 矩阵 W = [w1, w2, w3] 必须是可逆的。
  • 对于 R3 中的每个向量,必须有一种独特的方式将其写成 w 的线性组合。

  • 一旦确定了这些要求作为基础,就可以通过简单的矩阵乘法计算新坐标。假设您想将向量 v 表示为 v = c1 w1 + c2 w2 + c3 w3。将其写成矩阵形式,v = W c。要得到 c,你所要做的就是将两边都乘以 W 的倒数。

    c = W^{-1} v

    在 numpy 中,您可以将其写为,
    vec_new = np.linalg.inv(np.array([w1, w2, w3])).dot(vec_old)

    关于python - numpy中基础的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55082928/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com