# -*- coding: utf-8 -*-
"""
Created on Thu Sep 15 16:53:46 2022

@author: 102194

Lab8 Q7
"""

import numpy as np
from scipy import linalg as la

def qreigs(A,tol): 

    NMAX = 1000

    ukold = 0.

    Ak = A
    eigsold = np.zeros(len(A))
    
    for i in range(NMAX):
        Q, R = la.qr(Ak)
    
        Ak = R @ Q
        
        eigs = np.diag(Ak)
        
        if i > 2 and la.norm(eigs-eigsold,2)<tol:        
            return eigs

        eigsold = eigs
        
    print('Warning in peig: eigenvalue iteration failed to converge.')
    
        
A = np.random.rand(5,5)
tol = 1e-12
evals = qreigs(A,tol)
print('Eigenvalues:',evals)



        
    

    

