# Power Method (Largest Eigen Value & Vector) Python Program

Real world applications of science and engineering requires to calculate numerically the largest or dominant Eigen value and corresponding Eigen vector. There are different methods like Cayley-Hamilton method, Power Method etc. Out of these methods, Power Method follows iterative approach and is quite convenient and well suited for implementing on computer.

In this tutorial, we are going to implement Power Method to calculate dominant or largest Eigen Value & corresponding Eigen Vector in python programming language.

``````
# Power Method to Find Largest Eigen Value and Eigen Vector
# Importing NumPy Library
import numpy as np
import sys

n = int(input('Enter order of matrix: '))

# Making numpy array of n x n size and initializing
# to zero for storing matrix
a = np.zeros((n,n))

print('Enter Matrix Coefficients:')
for i in range(n):
for j in range(n):
a[i][j] = float(input( 'a['+str(i)+']['+ str(j)+']='))

# Making numpy array n x 1 size and initializing to zero
# for storing initial guess vector
x = np.zeros((n))

print('Enter initial guess vector: ')
for i in range(n):
x[i] = float(input( 'x['+str(i)+']='))

tolerable_error = float(input('Enter tolerable error: '))

# Reading maximum number of steps
max_iteration = int(input('Enter maximum number of steps: '))

# Power Method Implementation
lambda_old = 1.0
condition =  True
step = 1
while condition:
# Multiplying a and x
x = np.matmul(a,x)

# Finding new Eigen value and Eigen vector
lambda_new = max(abs(x))

x = x/lambda_new

# Displaying Eigen value and Eigen Vector
print('\nSTEP %d' %(step))
print('----------')
print('Eigen Value = %0.4f' %(lambda_new))
print('Eigen Vector: ')
for i in range(n):
print('%0.3f\t' % (x[i]))

# Checking maximum iteration
step = step + 1
if step > max_iteration:
print('Not convergent in given maximum iteration!')
break

# Calculating error
error = abs(lambda_new - lambda_old)
print('errror='+ str(error))
lambda_old = lambda_new
condition = error > tolerable_error
``````

Output

```Enter order of matrix: 2
Enter Matrix Coefficients:
a[0][0]=5
a[0][1]=4
a[1][0]=1
a[1][1]=2
Enter initial guess vector:
x[0]=1
x[1]=1
Enter tolerable error: 0.001
Enter maximum number of steps: 10

STEP 1
----------
Eigen Value = 9.0000
Eigen Vector:
1.000
0.333
errror=8.0

STEP 2
----------
Eigen Value = 6.3333
Eigen Vector:
1.000
0.263
errror=2.666666666666667

STEP 3
----------
Eigen Value = 6.0526
Eigen Vector:
1.000
0.252
errror=0.2807017543859649

STEP 4
----------
Eigen Value = 6.0087
Eigen Vector:
1.000
0.250
errror=0.04393592677345559

STEP 5
----------
Eigen Value = 6.0014
Eigen Vector:
1.000
0.250
errror=0.007248474171017705

STEP 6
----------
Eigen Value = 6.0002
Eigen Vector:
1.000
0.250
errror=0.0012060398307225384

STEP 7
----------
Eigen Value = 6.0000
Eigen Vector:
1.000
0.250
errror=0.00020095009195664204
```