Math 了解如何将Gram Schmidt过程转换为这段代码作为实现

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]

试图从以下解释中理解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]
        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()可能与此有关,但如何处理呢?