2017-04-04 125 views
0

Maxima特徵向量的輸出的第二部分是特徵向量的列表,其對應於第一部分的特徵值。Maxima:將特徵向量轉換爲矩陣

例如爲:

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

(1,2/3)是特徵值1的特徵向量,以及(1,-1)是本徵值(-1/4)的特徵向量。

如何將這些向量轉換爲矩陣(在這種情況下,它將等同於矩陣([1,1],[2/3,-1])))。

感謝

回答

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

這裏是一個嘗試。注意我已經通過多個任務首先提取了這些作品,以便很容易記住這些作品的含義。

(%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  ] 

不知道如果當特徵向量的數量爲特徵值和其他特殊情況下的數量不同,將工作。但我希望這給你一些繼續。