import math as mt
import copy
class SquareMatrix():
def __init__(self,a):
self.A = self.ori = a
self.n = len(a)
self.trans = []
self.Q = [[0]*self.n for i in range(self.n)]
for i in range(self.n):
self.Q[i][i] = 1
def get_max(self):
max = -1e9
maxx = 0
maxy = 0
for i in range(self.n):
for j in range(self.n):
if i==j:
continue
if abs(self.A[i][j])>max:
maxx = i
maxy= j
max = abs(self.A[i][j])
return (max,maxx,maxy)
def Jacobi_eigen(self,eps,iterN):
_A = self.A
count = 0
while True:
pos = self.get_max()
if pos[0]iterN:
break
Givens_trans_eliminate(self.A,pos[1],pos[2],self.Q)
count +=1