# -*- 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
    

A = np.random.rand(5,5)

NMAX = 100
tol = 1e-18

ukold = 0.

zk = np.zeros([len(A),1])
zk[[0]] = 1

for i in range(NMAX):
    yk = A @ zk
    uk = abs(yk).max()
    
    zk = yk/uk
    
    if i>2 and abs(uk-ukold)<tol:
        print('Eigenvalue:',uk)
        print('Eigenvector:',zk)
        
        print('Test:')
        print(la.norm(A @zk - uk*zk,2))
        
        break
    
    ukold = uk
    
    
        
    
    
        
    

    

