小编jus*_*ing的帖子

如何在 Python 中实现基于 Householder 的 QR 分解?

我目前正在尝试为矩形矩阵实现基于 Householder 的 QR 分解,如http://eprints.ma.man.ac.uk/1192/1/qrupdating_12nov08.pdf(第 3、4、5 页)中所述。

显然我弄错了一些伪代码,因为(1)我的结果不同于numpy.qr.linalg()(2)R我的例程产生的矩阵不是上三角矩阵。

我的代码(也可在https://pyfiddle.io/fiddle/afcc2e0e-0857-4cb2-adb5-06ff9b80c9d3/?i=true下找到)

import math
import argparse
import numpy as np
from typing import Union

def householder(alpha: float, x: np.ndarray) -> Union[np.ndarray, int]:
    """
    Computes Householder vector for alpha and x.
    :param alpha:
    :param x:
    :return:
    """

    s = math.pow(np.linalg.norm(x, ord=2), 2)
    v = x

    if s == 0:
        tau = 0
    else:
        t = math.sqrt(alpha * alpha + s)
        v_one = alpha - t if …
Run Code Online (Sandbox Code Playgroud)

python numpy linear-algebra numerical-methods qr-decomposition

4
推荐指数
1
解决办法
5743
查看次数