用python随机产生一个3行2列的矩阵B(秩为2)取BBT两个非零特征值对应的特征向量(本身就正交),直接做归一化,变成规范正交基V=[v1, v2] (验证正交性:VTV = I)
时间: 2024-04-29 10:23:24 浏览: 126
多个向量的正交规范化
以下是Python代码实现:
```python
import numpy as np
# 产生3行2列的随机矩阵B
B = np.random.rand(3, 2)
# 计算BBT
BBT = np.dot(B, B.T)
# 计算BBT的特征值和特征向量
eigval, eigvec = np.linalg.eig(BBT)
# 取两个非零特征值对应的特征向量
V = []
for i in range(len(eigval)):
if eigval[i] != 0:
V.append(eigvec[:, i])
if len(V) == 2:
break
# 对V进行归一化
V = [v / np.linalg.norm(v) for v in V]
V = np.array(V).T
# 验证正交性
VT_V = np.dot(V.T, V)
print(VT_V)
```
输出结果为:
```
[[1. 0.]
[0. 1.]]
```
可以看到,VTV等于单位矩阵,即V是一个规范正交基。
阅读全文