18 Mayıs 2018 Cuma

4. Ödev (QR Matrix) : 18 Mayıs 2018

Ödev Konusu: Verilen bir a matrisinin q.r şeklinde açılımını veren kod parçasıdır. Buradaki r değeri üçgen matris olmalıdır.

import numpy as np
def qr(A):
    m, n = A.shape
    Q = np.eye(m)
    for i in range(n - (m == n)):
        H = np.eye(m)
        H[i:, i:] = make_householder(A[i:, i])
        Q = np.dot(Q, H)
        A = np.dot(H, A)
    return Q, A
def make_householder(a):
    v = a / (a[0] + np.copysign(np.linalg.norm(a), a[0]))
    v[0] = 1
    H = np.eye(a.shape[0])
    H -= (2 / np.dot(v, v)) * np.dot(v[:, None], v[None, :])
    return H
a = np.array(((
    (12, -51, 4, 30),
    ( 6, 167, -68, 40),
    (-4,  24, -41, 50),
    (10, -20, 30, -40)
)))
q, r = qr(a)
print('q:\n', q.round(6))
print('r:\n', r.round(6))

Hiç yorum yok:

Yorum Gönder