Scipy:计算正交向量

问题描述 投票:0回答:1

我正在尝试使用Scipy进行正交向量计算:

import numpy as np
from scipy import linalg

e1 = np.float16([-0.913,  -0.4072]).reshape(2,1)

e2 = linalg.orth(e1)

print(f'e_1 {e1} ,'
      f' ortogonal e2 is {e2}')

我期望的输出是:

   e2 is [[-0.4072] [0.913]]

我检查了一下,通过:0.913 * -0.4072 + (-0.4072)*0.913 = 0

但是收到:

   e2 is [[-0.913] [-0.4072 ]]

我做错了什么?

python vector scipy
1个回答
0
投票

阅读文档。您调用的函数不会计算给定向量的正交向量,而是计算给定向量集的正交基。你给它一个归一化向量,所以你只是得到相同的向量。

如果它只是在单个非零向量的平面中,则不需要 scipy,因为 (b, -a) 始终与 (a, b) 正交。否则可能有一种解决方案、没有解决方案或多种解决方案。函数

linalg.null_space(e1.T)
为您提供所有可能的“正交向量”的正交基,即零空间。 注意转置。

© www.soinside.com 2019 - 2024. All rights reserved.