2013-03-15 7 views
1

41x41 배열을 maxima 행렬로 변환하는 방법을 찾으려고합니다. 시도해 보았습니다 aa1:matrix([aa]); 시도하면 matrixp(aa1)이 나오지만 그 행렬에는 첫 번째 값만 포함됩니다.행렬에 배열

의견이 있으십니까?

답변

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 sub 21,21을 가졌습니다. – user1558881

+0

배열이 410x410 인 경우에도이 오류를 재현 할 수 없습니다. 이 오류가있는 최소한의 예를 만들 수 있습니까? – Thor

+0

for 루프에 문제가 발생하여 오류가 발생했습니다. 이제는 도움을 많이 주셔서 감사합니다. 이제이 행렬의 고유 값을 찾기 위해 maxima를 사용하고 있으며 매우 오랜 시간이 걸립니다. 한 시간 정도. Mathematica는 약 1 분 안에 고유 값을 풀 수 있습니다. 맥시마는이 크기의 행렬을 다루는 데 문제가 있습니까? – user1558881