一. 定义
Gram-Schmidt正交化是一种线性代数中的方法,用于将给定向量组的基向量转化为标准正交基向量或标准正交基的扩展。
二. 一般求解步骤
1.初始化:给定向量组a1, a2, ..., an。
2.初始化一个正交基向量组q1, q2, ..., qn,开始时可以将q1设置为a1的单位向量,即q1 = a1 / ||a1||。
3.对于每个i(从2到n)执行以下步骤:
a. 计算投影向量:计算a_i 在前面的正交基向量q1, q2, ..., qi-1 上的投影向量,可以使用内积来计算。 proj = (a_i · q1) * q1 + (a_i · q2) * q2 + ... + (a_i · qi-1) * qi-1
b. 计算正交向量:将a_i 减去投影向量,得到正交向量。 u_i = a_i - proj
c. 计算标准正交基向量:将u_i 单位化,得到标准正交基向量。 q_i = u_i / ||u_i||
4.重复步骤3,直到处理完所有的向量a1, a2, ..., an。
三. 例题
1.利用Gram-Schmidt 正交化求向量组a1 = (-1,2,4)^T,a2=(2,2,0)^T生成子空间的标准正交基。
步骤:
1. 初始化向量a1和a2。
2. 计算q1,q2。
3. 标准化q1和q2。
实现代码:
import numpy as np
# 定义给定向量组
a1 = np.array([-1, 2, 4])
a2 = np.array([2, 2, 0])
# 步骤1:初始化向量a1和a2
q1 = a1 / np.linalg.norm(a1)
# 步骤2:计算q2
proj_a2_q1 = np.dot(a2, q1) * q1
u2 = a2 - proj_a2_q1
# 步骤3:标准化q2
q2 = u2 / np.linalg.norm(u2)
# 输出标准正交基向量
print("标准正交基向量 q1:", q1)
print("标准正交基向量 q2:", q2)