Array

I vettori e le matrici sono casi particolari di oggetti più generali chiamati array, e le istruzioni vector e matrix altro non sono che abbreviazioni di alcuni usi particolari dell'istruzione array .

> w := array (1..4,[4,1,-2,7]);
v := vector (4,[4,1,-2,7]);

Confrontiamo ora v e w

> evalb(v=w);

Sebbene i due oggetti siano uguali, abbiamo ottenuto risposta negativa, questo perché evalb esegue un test troppo superficiale. Per confrontare matrici, vettori, bisogna usare il comando equal .

> equal(v,w);

Analogamente con le matrici:

> A:=matrix(3,2,[1,2,3,4,5,6]):
B:=array(1..3,1..2,[[1,2],[3,4],[5,6]]):
evalb(A=B);
equal(A,B);


È abbastanza chiara, dagli esempi la sintassi dell'istruzione array: si specificano gli intervalli su cui far variare gli indici e quindi si mette la lista degli elementi nel caso delle matrici gli elementi sono dati come lista di liste, che descrivono le righe della matrice.

Si possono però indicizzare gli array anche su diversi range di interi (non necessariamente che inizino con 1). Scrivendo

> w := array (-1..2,[1,2,3,4]):

si ottiene un vettore in cui le coordinate non sono indicizzate da 1,2,3,4 ma da -1,0,1,2

> w[-1];w[0];w[1];w[2];

> w[3];

Perchè questo errore?

Si possono definire anche array a 3 o più indici, ad esempio:

> t:=array(-1..0,8..10,-11..-8,[
[[1,2,3,4],[5,6,7,8],[9,10,11,12]],
[[-1,-2,-3,-4],[-5,-6,-7,-8],[-9,-10,-11,-12]]
]):

> t[0,9,-9];