1. Write a Python program to compute the eigenvalues and right eigenvectors of a given square array.

from functools import reduce
# Given Square Matrix
A = ([[5, -3],
      [-6, 2]])

print("\nA:")      
## 
## A:
for m in A:
  print(m)

# Identity
## [5, -3]
## [-6, 2]
I = ([[1, 0],
      [0, 1]])

print("\nI:")
## 
## I:
for m in I:
  print(m)

# A Transpose A
## [1, 0]
## [0, 1]
AxI = ([[0, 0],
        [0, 0]])

for i in range(len(A)):
    for j in range(len(I[0])):
        for k in range(len(I)):
            AxI[i][j] += A[i][k] * I[k][j]

print("\nAxI:")
## 
## AxI:
for m in AxI:
    print(AxI)
## [[5, -3], [-6, 2]]
## [[5, -3], [-6, 2]]
print("\nFactor:")
## 
## Factor:
lamda = ([[0,0],
        [0,0]])

for i in range(len(AxI)):
    for j in range(len(AxI)):
     #factor[i][j] = AxI[i][j]
     lamda[i][i] = ("x".format(AxI[i][i]))

print('\n= ({0} - {1})({2} - {3}) - ({4})({5})=0'.format(AxI[0][0], lamda[0][0], AxI[1][1], lamda[1][1], AxI[1][0], AxI[0][1]))
## 
## = (5 - x)(2 - x) - (-6)(-3)=0
print('\n= ({0} - {1})({2} - {3}) - {4} = 0'.format(AxI[0][0], lamda[0][0], AxI[1][1], lamda[1][1], AxI[1][0] * AxI[0][1]))
## 
## = (5 - x)(2 - x) - 18 = 0
id_count = 0 # number of identities
coeff = 0 # coefficient
for i in range(len(lamda)):
    for j in range(len(lamda)):
            if (lamda[i][j] == "x"):
                id_count = id_count + 1
                coeff = ("x^{0}".format(id_count))
               
       
print("\n= {0}{1}{2}+{3} - {4} = 0".format(coeff, -AxI[0][0]-AxI[1][1], lamda[1][1], (-AxI[0][0])*(-AxI[1][1]), (-AxI[1][0]) * (-AxI[0][1])))        
## 
## = x^2-7x+10 - 18 = 0
print("\n= {0}{1}{2}+{3} = 0".format(coeff, -AxI[0][0]-AxI[1][1], lamda[1][1], ((-AxI[0][0])*(-AxI[1][1]))-((-AxI[1][0]) * (-AxI[0][1]))))  
## 
## = x^2-7x+-8 = 0
factor1 = (-AxI[0][0] - AxI[1][1])

determinant = (((-AxI[0][0])*(-AxI[1][1]))-((-AxI[1][0]) * (-AxI[0][1])))

factor1 = determinant - factor1

print(factor1)
## -1
print(determinant)
## -8
print("\nEigen Values:")
## 
## Eigen Values:
print("(x + ({0}))(x + ({1}))".format(factor1,determinant))
## (x + (-1))(x + (-8))
print("\nEigen Vector")
## 
## Eigen Vector
eval1 = AxI[0][0] - (factor1)
eval2 = AxI[1][1] - (factor1)

print(eval1)
## 6
print(eval2)
## 3
eiganVector1 = AxI[0][1] / eval2

eiganVector2 = AxI[1][0] / eval2

print("Eigan vectors are: {0} and {1}".format(eiganVector1, eiganVector2))
## Eigan vectors are: -1.0 and -2.0

2. Write a Python program to compute the factor of a given array by Singular Value Decomposition

from functools import reduce
# Given Square Matrix
A = ([[5, -3],
      [-6, 2]])

print("\nA:")      
## 
## A:
for m in A:
  print(m)

# Transpose
## [5, -3]
## [-6, 2]
T = ([[0, 0],
      [0, 0]])

# Transpose Matrix
for i in range(len(A)):
    for j in range(len(T)):
        T[i][j] += A[j][i]

print("\nT:")
## 
## T:
for m in T:
  print(m)

# A Transpose A
## [5, -6]
## [-3, 2]
ATA = ([[0, 0],
        [0, 0]])

for i in range(len(A)):
    for j in range(len(T[0])):
        for k in range(len(T)):
            ATA[i][j] += A[i][k] * T[k][j]

print("\nATA - A Transpose A:")
## 
## ATA - A Transpose A:
for m in ATA:
    print(ATA)
## [[34, -36], [-36, 40]]
## [[34, -36], [-36, 40]]
print("factor:")
## factor:
lamda = ([[0,0],
        [0,0]])

for i in range(len(ATA)):
    for j in range(len(ATA)):
     #factor[i][j] = AxI[i][j]
     lamda[i][i] = ("x".format(ATA[i][i]))

print('\n= ({0} - {1})({2} - {3}) - ({4})({5})=0'.format(ATA[0][0], lamda[0][0], ATA[1][1], lamda[1][1], ATA[1][0], ATA[0][1]))
## 
## = (34 - x)(40 - x) - (-36)(-36)=0
print('\n= ({0} - {1})({2} - {3}) - {4} = 0'.format(ATA[0][0], lamda[0][0], ATA[1][1], lamda[1][1], ATA[1][0] * ATA[0][1]))
## 
## = (34 - x)(40 - x) - 1296 = 0
id_count = 0 # number of identities
coeff = 0 # coefficient
for i in range(len(lamda)):
    for j in range(len(lamda)):
            if (lamda[i][j] == "x"):
                id_count = id_count + 1
                coeff = ("x^{0}".format(id_count))
               
       
print("\n= {0}{1}{2}+{3} - {4} = 0".format(coeff, -ATA[0][0]-ATA[1][1], lamda[1][1], (-ATA[0][0])*(-ATA[1][1]), (-ATA[1][0]) * (-ATA[0][1])))        
## 
## = x^2-74x+1360 - 1296 = 0
print("\n= {0}{1}{2}+{3} = 0".format(coeff, -ATA[0][0]-ATA[1][1], lamda[1][1], ((-ATA[0][0])*(-ATA[1][1]))-((-ATA[1][0]) * (-ATA[0][1]))))  
## 
## = x^2-74x+64 = 0
factor1 = (-ATA[0][0] - ATA[1][1])

determinant = (((-ATA[0][0])*(-ATA[1][1]))-((-ATA[1][0]) * (-ATA[0][1])))

factor1 = determinant - factor1

print(factor1)
## 138
print(determinant)
## 64
print("\nEigen Values:")
## 
## Eigen Values:
print("(x + ({0}))(x + ({1}))".format(factor1,determinant))
## (x + (138))(x + (64))
print("\nEigen Vector")
## 
## Eigen Vector
eval1 = ATA[0][0] - (factor1)
eval2 = ATA[1][1] - (factor1)

print(eval1)
## -104
print(eval2)
## -98
eiganVector1 = ATA[0][1] / eval2

eiganVector2 = ATA[1][0] / eval2

print("Eigan vectors are: {0} and {1}".format(eiganVector1, eiganVector2))

    
## Eigan vectors are: 0.3673469387755102 and 0.3673469387755102

3. Write a Python program to compute the determinant of an array.

# Given Square Matrix
A = ([[5, -3],
      [-6, 2]])

# Identity Matrix
I =  ([[1,0],
      [0,1]])

# A * Identity Matrix
AxI = ([[0,0,],
        [0,0]])

for i in range(len(A)):
    for j in range(len(I[0])):
        for k in range(len(I)):
                AxI[i][j] += A[i][k]*I[k][j]


determinant =  (AxI[0][0] * AxI[1][1] - AxI[1][0] * AxI[0][1])


print("Determinant: {0}".format(determinant))
## Determinant: -8