Für eine Aufgabe benötige ich Eigenwerte, die ich mit scipy.linalg.eigvals(matrix) berechne. Da mir die Ergebnisse der Berechnung komisch vorkamen, hab ich die berechneten Werte überprüft. (Nach dem Muster det(matrix - lambda * E) = 0?):
Code: Alles auswählen
import scipy as S
import scipy.linalg as L
import random
def test(m):
eig = L.eigvals(m)
dim = S.shape(m)[0]
eye = S.matrix(S.eye(dim,dim))
for x in eig:
eye_t = eye * x.real
D = m - eye_t
det = L.det(D)
print 'Eigenwert: ',x.real
print 'Determinante nach Test:',det
def generate_matrix(dim, size):
A = S.matrix(S.zeros((dim,dim)))
for i in range(dim):
for j in range(dim):
A[i,j] = random.random()*size
A *= A.transpose() #Symmetrisierung der Matrix
print 'Groeßter Wert in der getesteten Matrix:',A.max()
return A
def exe(i, size):
for k in range(i):
print 'Dimension der Matrix:',k+1
A = generate_matrix(k+1,size)
test(A)
print'---------------'
>>>exe(30,2)
So ist das Ergebnis der Determinante bei fast allen Größen nicht wie erwartet 0, sondern extrem groß, immer größer werdend mit höherer Dimension.
Mache ich einen Fehler im Test?
Berechnet scipy falsche Werte?
Danke für die Hilfe im Voraus.
Grüße!