Gram-Schmidt正交化

一.  定义

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)


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值