# -*- coding: utf-8 -*-
"""
Created on Thu Sep 15 16:53:46 2022

@author: 102194

Lab8 Q7
"""

import numpy as np
import matplotlib.pyplot as plt
from scipy import sparse as sp
from scipy.sparse import linalg as sla
from scipy import linalg as la
    
N = 1000

AD = (np.random.randn(N,N)-1)**5
AD[abs(AD)<0.1] = 0.


A = sp.csc_matrix(AD)

NMAX = 1000
tol = 1e-18

ukold = 0.

zk = np.zeros([N,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
    
    
        
    
    
        
    

    

