gpt4 book ai didi

python - 如何在 python 中计算正交向量?

转载 作者:行者123 更新时间:2023-11-28 16:42:39 27 4
gpt4 key购买 nike

我有以下代码来计算来自 i,j 维矩阵的输入的每个向量的正交向量。所以矩阵中的每一行都是一个向量。这是代码:

for i in range(data.shape[0]):
for j in range(data.shape[1]):
s=0 #row counter set to 0
if j == data.shape[1]-1: #check if last row element has been reached
for k in range(j): #compute the sum of all previous values.
s=s+data2[i][k]*data[i][k]
data2[i][j] = -s/data[i][k]
else:
data2[i][j] = random.uniform(1,random.getrandbits(10))
dot(data[i],data2[i])

但它不起作用,因为 dot 函数很少返回 0,这应该是在向量正交的情况下。我看不到代码逻辑的流程。我简单地为正交向量的系数固定 j-1 个随机元素,然后为了找到最后一个系数,我求解一个简单的方程,它是随机元素的先前系数与向量的系数除以的点积最后一个系数。 a1r1+a2r3+...+anrn=0。我知道艾的。我固定随机 i-1 ri 然后我解决 1 var 方程线性问题以找到 rn suth 而不是 ri 向量将与 a1 向量正交。我得到的最后一次点积计算的结果是这种形式:

===================================================
8.90285882653
===================================================
15.1275777619
===================================================
25.0847305913
===================================================
30.8608285102
===================================================
35.2496752739
===================================================
-53.3796252747
===================================================
16.302777
===================================================
29.3607765359
===================================================
-39.8982101139
===================================================
42.97222625

最佳答案

这行得通。我编辑了一些你的代码(去掉了 var s,现在称为商),但唯一的错误是在 k 的范围内,直到向量的总长度减去 2,而不是倒数第二个一个元素。无论如何请注意,此方法并不稳健。

for i in range(data.shape[0]):
for j in range(data.shape[1]):
if j == data.shape[1]-1: #check if last row element
quotient=(data2[i][:-1]*data[i][:-1]).sum()
data2[i][j] = -quotient/data[i][-1]
else:
data2[i][j] = random.uniform(1)
print dot(data[i],data2[i])

关于python - 如何在 python 中计算正交向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17297429/

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