You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Householder变换对对称矩阵三对角化?代码通用问题求助

对称矩阵Householder三对角化代码问题

我正在参考一份线性代数笔记,使用Householder变换对对称矩阵进行三对角化,笔记第2页有相关示例。以下是我编写的Python代码:

尽管这段代码对我测试的某个特定哈密顿量有效,但无法通用。我已添加注释,方便理解。据我所知,若矩阵非对称,运行这段代码会得到上三角矩阵。

import numpy as np
from numpy.linalg import matrix_power,norm,eigvals

# 先生成一个维度为d的随机矩阵
d=4
a=np.random.rand(d,d)
# 转为对称矩阵,我研究的是物理中的厄米矩阵
h=(a+a.T)/2
ei,ev=np.linalg.eig(h)
hp=h.copy()

for i in range(d-2):  
    # 记录要置零的元素的范数,存到对角旁的矩阵元素中
    if norm(h[i+2:,i])>0: 
        h[i][i+1]=norm(h[i+2:,i])
       
    for j in range(i+2,d):
        h[i][j]=0
   
   
    w= (hp[i]-h[i])
    
    if norm(w)==0:
        w=w
    else:
        w=w/norm(w)
    p=(np.eye(d) - 2*np.outer(w, w))
   
    h=(p@hp@p.T).round(4)
    
    hp=h.copy()
    

print(h)

内容的提问来源于stack exchange,提问作者sreeram pg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 08:26:55