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

复现Shapiro & Watson(1988)时Givens Rotation实现问题求助

Shapiro & Watson(1988)研究复现中的Givens旋转问题

我正在复现Shapiro & Watson(1988)的研究,需要通过Givens旋转施加长期约束。目标恒等式为:

C_inf@B=C_inf(P@Q_total)=(C_inf@P)@Q_total=A@Q_total

但我的代码运行后得到的C(1)@B与A@Q_total结果不一致,怀疑自己对Givens旋转的定义或应用存在错误,以下是相关代码:

import numpy as np

def givens_rotation(a, b):
    r = np.hypot(a, b)
    if r == 0:
        return 1.0, 0.0
    c = a / r
    s = b / r
    return c, s
   
def apply_givens(M, i, j, k):
    
    x = M[i, j]
    y = M[i, k]
    c, s = givens_rotation(x, y)

    n = M.shape[0]
    G = np.eye(n)
    G[j, j] = c
    G[j, k] = s
    G[k, j] = -s
    G[k, k] = c
       
    M[:] = M @ G
    return G
   
   
zero_constraints = [
    (0, 4),  # step 1: zero A[0,4]
    (0, 3),  # step 2: zero A[0,3]
    (0, 2),  # step 3: zero A[0,2]
    (0, 1),  # step 4: zero A[0,1]
    #
    (1, 4),  # step 5: zero A[1,4]
    (1, 3),  # step 6: zero A[1,3]
    (1, 2),  # step 7: zero A[1,2]
    #
    (2, 4),  # step 8: zero A[2,4]
    (2, 3)   # step 9: zero A[2,3]
]
   
   
for (i, j) in zero_constraints:
    k = n - 1  
    k = 4 if j < 4 else (3 if j < 3 else (2 if j < 2 else (1 if j < 1 else None)))
    
    G_jk = apply_givens(A, i, j, k)    

内容的提问来源于stack exchange,提问作者samuele ridolfi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 22:22:47