Math 了解如何将Gram Schmidt过程转换为这段代码作为实现
试图从以下解释中理解Gram-Schmidt过程: 计算的步骤对我来说很有意义。然而,同一篇文章中包含的Python实现似乎并不一致Math 了解如何将Gram Schmidt过程转换为这段代码作为实现,math,artificial-intelligence,linear-algebra,Math,Artificial Intelligence,Linear Algebra,试图从以下解释中理解Gram-Schmidt过程: 计算的步骤对我来说很有意义。然而,同一篇文章中包含的Python实现似乎并不一致 def normalize(v): return v / np.sqrt(v.dot(v)) n = len(A) A[:, 0] = normalize(A[:, 0]) for i in range(1, n): Ai = A[:, i] for j in range(0, i): Aj = A[:, j]
def normalize(v):
return v / np.sqrt(v.dot(v))
n = len(A)
A[:, 0] = normalize(A[:, 0])
for i in range(1, n):
Ai = A[:, i]
for j in range(0, i):
Aj = A[:, j]
t = Ai.dot(Aj)
Ai = Ai - t * Aj
A[:, i] = normalize(Ai)
从上面的代码中,我们可以看到它对V1和b的点积是的,但是(V1,V1)部分并不是作为分母(参考下面的等式)。我想知道下面的等式是如何转换成驻留在for循环中的代码的
这就是代码的作用 基本上,它规范化了前一个向量(A中的列),并将当前向量投影到该向量,然后用当前向量减去当前向量 对每个向量进行标准化处理,以便进行精确计算
上面的V2方程没有标准化上一个向量,因此存在差异。第二项涉及
b
与单位向量v1
的点积。在代码片段中,这是通过normalize()
@meowgoesthedog提前完成的。我有点理解你的意思,但我无法将第二个术语映射到代码,因此提出了问题。在第二个术语中,normalize()是如何表示的?b
是Ai
的初始值<代码>v[1]。。。v[n]
表达式中的v[n-1]是Aj
的值t
是分数术语。@meowgoesthedog非常感谢。我很难理解的是t,因为Ai和Aj的点积只能实现V1@B,它是分数的分子。分数的分母丢失了。在我看来,normalize()可能与此有关,但如何处理呢?