# -*- 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 ipeig(A,tol): 

    AI = la.inv(A)

    NMAX = 1000

    ukold = 0.

    zk = np.zeros([len(A),1])
    zk[[0]] = 1

    for i in range(NMAX):
        yk = AI @ zk
        uk = abs(yk).max()
    
        zk = yk/uk
    
        if i>2 and abs(uk-ukold)<tol:
            return (1/uk),zk
    
        ukold = uk
    
    print('Warning in peig: eigenvalue iteration failed to converge.')
    
        
A = np.random.rand(5,5)
tol = 1e-12
lam, vec = ipeig(A,tol)
print('Eigenvalue:',lam)
print('Eigenvector',vec)
    
print('Test:',la.norm(A @ vec - lam*vec,2))


        
    

    

