2013-03-15 186 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