2017-04-04 5 views
0

Der zweite Teil der Ausgabe der Eigenvektoren Funktion in Maxima ist eine Liste der Eigenvektoren, die den Eigenwerten des ersten Teils entsprechen.Maxima: Eigenvektoren in eine Matrix verwandeln

z.B .:

[[[1,-1/4],[1,1]],[[[1,2/3]],[[1,-1]]]] 

(1,2/3) ist der Eigenvektor der Eigenwert 1 und (1, -1) ist der Eigenwert-Eigenvektor von (-1/4).

Wie kann ich diese Vektoren in eine Matrix umwandeln (in diesem Fall wäre es äquivalent zur Matrix ([1,1], [2/3, -1])).

Dank

Antwort

0
(%i1) display2d: false $ 
(%i2) r: [[[1,-1/4],[1,1]],[[[1,2/3]],[[1,-1]]]] $ 
(%i3) s: second(r) $ 
(%i4) s: map('first, s) $ 
(%i5) s: apply('maplist, cons("[", s)) $ 
(%i6) s: apply('matrix, s); 
(%o6) matrix([1,1],[2/3,-1]) 
0

Hier ist ein Versuch. Beachten Sie, dass ich die Stücke zuerst über mehrere Aufgaben extrahiert habe, damit Sie sich leicht daran erinnern können, was die Stücke bedeuten.

(%i1) foo : [[[1,-1/4],[1,1]],[[[1,2/3]],[[1,-1]]]] $ 

(%i2) [[vals, mults], vecs] : foo; 
         1     2 
(%o2)   [[[1, - -], [1, 1]], [[[1, -]], [[1, - 1]]]] 
         4     3 
(%i3) vals; 
             1 
(%o3)        [1, - -] 
             4 
(%i4) mults; 
(%o4)        [1, 1] 
(%i5) vecs; 
            2 
(%o5)      [[[1, -]], [[1, - 1]]] 
            3 
(%i6) apply (append, vecs); 
            2 
(%o6)       [[1, -], [1, - 1]] 
            3 
(%i7) apply (matrix, apply (append, vecs)); 
            [  2 ] 
            [ 1 - ] 
(%o7)        [  3 ] 
            [  ] 
            [ 1 - 1 ] 
(%i8) transpose (%); 
            [ 1 1 ] 
            [  ] 
(%o8)        [ 2  ] 
            [ - - 1 ] 
            [ 3  ] 

Nicht sicher, ob das funktionieren wird, wenn die Anzahl von Eigenvektoren verschieden von Anzahl von Eigenwerten und anderen Sonderfällen. Aber ich hoffe, das gibt dir etwas weiter.

Verwandte Themen