2013-03-15 126 views
1

我想找到一種方法來將41x41數組轉換爲最大值矩陣。 我試過aa1:matrix([aa]); 如果我嘗試matrixp(aa1)它會生成true,但矩陣只包含第一個值。陣列到矩陣

有沒有人有任何想法?

回答

1

IIUC最大值數組是散列,所以順序不像矩陣那樣穩定。除此之外,似乎應該有可能瞭解如何生成陣列以及如何生成genmatrix,請參閱第五個faq entry

所以,如果像這樣產生了陣列:

(%i1) for i thru 4 do for j thru 4 do A[i,j]: i+j$ 

我們有:

(%i2) listarray(A); 
(%o2) [2, 3, 4, 5, 3, 4, 5, 6, 4, 5, 6, 7, 5, 6, 7, 8] 
(%i3) arrayinfo(A); 
(%o3) [hashed, 2, [1, 1], [1, 2], [1, 3], [1, 4], [2, 1], [2, 2], [2, 3], [2, 4], [3, 1], [3, 2], [3, 3], [3, 4], [4, 1], [4, 2], [4, 3], [4, 4]] 

A可以被轉換爲4×4矩陣是這樣的:

(%i4) genmatrix(A,4,4); 
     [ 2 3 4 5 ] 
     [   ] 
     [ 3 4 5 6 ] 
(%o4) [   ] 
     [ 4 5 6 7 ] 
     [   ] 
     [ 5 6 7 8 ] 
+0

當我試圖這個我得到了一個說明,表達太長而無法顯示。 '(%i901)aa1:genmatrix(aa,41,41) <<表達式太長以至於無法顯示! >>' 當我檢查它已經使aa1矩陣,但幾個值是失蹤,而只是有aa1分21,21。 – user1558881 2013-03-15 14:54:22

+0

即使使用410x410的數組,我也無法重現此錯誤。你能舉一個有這個錯誤的最小例子嗎? – Thor 2013-03-15 15:10:30

+0

我的for循環中出現了一個錯誤,它造成了問題。它現在的作品謝謝你的幫助。 我現在使用最大值來找到這個矩陣的特徵值,它需要很長時間。大約一個小時。 Mathematica可以在一分鐘內解決特徵值問題。 maxima在處理這種尺寸的矩陣時有問題嗎? – user1558881 2013-03-17 02:18:37