コード例 #1
0
def qr_left(A):
    "Computes a left-looking QR factorization of A with M >= N"

    import numpy as np
    from cppsparse import dhouse, dvec

    m, n = A.shape
    V = np.zeros((m, n))
    B = np.zeros(n)
    R = np.zeros((m, n))

    for i in range(n):
        x = A[:, i].copy()
        for k in range(i):
            v = V[k::, k]
            beta = B[k]
            x[k::] = apply_q(v, beta, x[k::])
        xt = dvec(x[i::])
        norm, beta = dhouse(xt)
        V[i::, i] = np.array(xt)
        B[i] = beta
        R[:i, i] = x[:i]
        R[i, i] = norm

    Q = compute_q(V, B)
    return Q, R
コード例 #2
0
ファイル: qrdemo.py プロジェクト: drdarshan/CppSparse
def qr_left(A):
    "Computes a left-looking QR factorization of A with M >= N"

    import numpy as np
    from cppsparse import dhouse, dvec

    m,n = A.shape
    V = np.zeros((m, n))
    B = np.zeros(n);
    R = np.zeros((m, n))

    for i in range(n):
        x = A[:, i].copy();
        for k in range(i):
            v = V[k::, k]
            beta = B[k]
            x[k::] = apply_q(v, beta, x[k::])
        xt = dvec(x[i::])
        norm, beta = dhouse(xt)
        V[i::,i] = np.array(xt)
        B[i] = beta
        R[:i,i] = x[:i]
        R[i,i] = norm

    Q = compute_q(V, B)
    return Q, R
コード例 #3
0
ファイル: householder.py プロジェクト: drdarshan/CppSparse
def householder(x):
    from cppsparse import dhouse, dvec
    import numpy
    xtemp = dvec(x)
    norm, beta = dhouse(xtemp)
    v = numpy.array(xtemp)
    v.shape = len(x), 1
    print(v)
    return numpy.identity(len(x)) - beta * numpy.dot(v, v.transpose())
コード例 #4
0
ファイル: householder.py プロジェクト: drdarshan/CppSparse
def householder(x):
    from cppsparse import dhouse, dvec
    import numpy
    xtemp = dvec(x);
    norm, beta = dhouse(xtemp)
    v = numpy.array(xtemp)
    v.shape = len(x),1
    print(v)
    return numpy.identity(len(x)) - beta * numpy.dot(v, v.transpose())
コード例 #5
0
def qr_right(a):
    "Computes a right-looking QR factorization of A with M >= N"

    import numpy as np
    from cppsparse import dhouse, dvec

    m, n = a.shape
    V = np.zeros((m, n))
    B = np.zeros(n)
    R = a.copy()

    for i in range(n):
        x = dvec(R[i::, i])
        norm, beta = dhouse(x)
        x = np.array(x)
        V[i::, i] = x
        B[i] = beta
        x.shape = x.size, 1
        R[i::, i::] = R[i::, i::] - beta * np.dot(x, np.dot(x.T, R[i::, i::]))

    return compute_q(V, B), np.triu(R)
コード例 #6
0
ファイル: qrdemo.py プロジェクト: drdarshan/CppSparse
def qr_right(a):
    "Computes a right-looking QR factorization of A with M >= N"

    import numpy as np
    from cppsparse import dhouse, dvec

    m,n = a.shape
    V = np.zeros((m, n))
    B = np.zeros(n);
    R = a.copy();

    for i in range(n):
        x = dvec(R[i::, i]);
        norm, beta = dhouse(x)
        x = np.array(x)
        V[i::,i] = x
        B[i] = beta
        x.shape = x.size,1
        R[i::,i::] = R[i::, i::] - beta * np.dot(x, np.dot(x.T, R[i::, i::]))

    return compute_q(V, B), np.triu(R)