#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Sep 24 15:49:27 2024

@author: sam
"""

import numpy as np
from scipy import linalg as la



def peig(A,tol):
    vk = np.random.rand(len(A),1) # creates a random vector vk with dimension equal to the length of a given matrix Ax1
    u = A@vk # same as Q7
    μk = 0
    μj = 1

    while abs(μk-μj) > tol:
        u = A@vk
        
        μj = μk
        
        μk = la.norm(u,np.inf)
        
        vk = u/μk
    lam = la.norm(u,np.inf) # saves value of largest eigenvalue
    vec = vk # saves value of largest eigenvector
    return lam,vec



print('lam =',peig(np.random.rand(5,5),1e-5)[0],'\nvec =\n',peig(np.random.rand(5,5),1e-5)[1])