Seite 1 von 1

kein durchblick bei NumPy/LinearAlgebra.py

Verfasst: Sonntag 11. Mai 2008, 13:46
von Simonheld
Hallo
ich benutze python im rahmen meines Studiums/Diplomarbeit(physik) zum ersten mal
und bin auf der suche nach einer methode zum diagonalisieren von matrizen (energie-eigenwerte und eigenzustände bestimmen).
dabei bin ich auf das paket bzw. die klasse "LinearAlgebra" gestossen, welche eine methode "eigenvalues(matrix m)" (siehe http://numpy.scipy.org/numpydoc/numdoc.htm)zur verfügung stellt ... so wie ich das verstehe ist diese nur auf "matrix"-objekte anwendbar, deren klasse wiederum eine unterklasse von "array" ist.
wie dem auch sei hier mein code:
from math import *
from Numeric import *
from numpy import *
import sys
from LinearAlgebra import *

N = 10

H = matrix([[0.]*(N+1)]*(N+1))

for x in xrange(N+1):
H[x,x] = U*(N/2*(N/2-1)+(x-N/2)**2)

for x in xrange(N):
H[x,x+1] = .5*((x-N/2)*(x-N/2+1)-N/2*(N/2+1))
H[x+1,x] = H[x,x+1]

evals, evecs = eigenvectors(H)
und meine fehlermeldung:
Traceback (most recent call last):
File "test.py", line 26, in ?
evals, evecs = eigenvectors(H)
File "/usr/lib64/python2.4/site-packages/Numeric/LinearAlgebra.py", line 216, in eigenvectors
t =_commonType(a)
File "/usr/lib64/python2.4/site-packages/Numeric/LinearAlgebra.py", line 30, in _commonType
t = a.typecode()
AttributeError: 'matrix' object has no attribute 'typecode'
kann mir da vielleicht irgendjemand weiter helfen ?

Verfasst: Sonntag 11. Mai 2008, 18:52
von Darii
Ich kenne mich mit Numpy nicht so aus, aber versuch erstmal die ganzen Sternchenimports zu vermeiden. Das wird vermutlich die Probleme verursachen.
Und beschräke dich am besten nur auf numpy. Numeric/LinearAlgebra ist veraltet. Versuchs mal mit der Funktion "eig" aus "numpy.linalg"

Achja: Was ist U?

Verfasst: Montag 12. Mai 2008, 12:29
von Simonheld
ach ja die zeile wo ich U gesetzt habe, habe ich beim posten anscheinend mit rausgetan alsich die kommentare gelöscht habe (wg. besserer Übersicht)