# -*- 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

def speig(A,tol):
    NMAX = 1000

    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))
            
            return uk,zk
        
        ukold = uk
        

    
N = 1000

AD = (np.random.randn(N,N)-1)**5
AD[abs(AD)<0.1] = 0.

A = sp.csc_matrix(AD)
tol = 1e-18

lam,vec = speig(A,tol)



        
    
    
        
    

    

