array - 配列の作成
使い方
array( indexfcn, bounds, list)
パラメータ
indexfcn - (オプション) インデックス関数
bounds - (オプション) 範囲の列
list - (オプション) 初期値のリスト
|
説明
|
|
•
|
配列はテーブルの特殊なものです。0 個以上の指定された次元を持ち、各々の次元は整数の範囲です。array 関数を実行すると配列が作成されます。たとえば、V:= array(1..10) は長さ 10 の 1 次元の配列を作成しますが、明示された成分はありません。コマンド A:= aray(1..m,1..n) (m と n は正の整数) は m 行 n 列の 2 次元の配列を作成します。
|
•
|
array 関数へのすべてのパラメータはオプションで、どんな順序で現れても構いませんが、少なくとも 1 個の境界とリストが現れなくてはなりません。境界パラメータは整数の範囲の式列で続けて現れなくてはいけません。境界は指定されなければ、初期値のリストから導かれます。
|
•
|
indexfcn は、どのようなインデックス付けが行なわれるかを指定する手続きまたは名前です。 詳細は indexfcn を参照して下さい。組み込みのインデックス関数には symmetric, antisymmetric, sparse, diagonal, identity があります。indexfcn が指定されなければ「通常の」インデックス付けが行なわれます。
|
•
|
初期値のリストは等式のリスト (table を参照)、または値のリスト (1 次元)、またはリストの入れ子のリスト (行毎の) です。
|
•
|
map 関数は、関数を配列の各々の成分に適用するため使うことができます。たとえば、map(simplify, A) は配列 A の各々の成分を簡単にします。
|
•
|
配列は (手続きのように) 特殊な評価規則を持ちます。名前 A が配列に割り当てられたとき、A は名前 A と評価され、eval(A) が実際の配列構造を与えます。
|
•
|
op 関数は配列構造を分解することができます。op(1,eval(A)) は、もしそれが指定されていれば indexfcn を与えます。indexfcn が指定されていなければ、何も返しません。op(2,eval(A)) は境界;そして op(3,eval(A)) は成分を与えます。ここで、成分は配列の明示された成分に対応する等式のリストです (entries を参照)。
|
|
|
例
|
|
>
|
v := array(1..4):
for i to 3 do v[i] := i^2 end do:
print(v);
|
| (2.1) |
| (2.2) |
範囲の外の何かを参照しようとするとエラーが返されます。
Error, 1st index, 0, smaller than lower array bound 1
| |
>
|
A := array(1..2,1..2):
A[1,2] := x:
A[1,1];
|
| (2.3) |
| (2.4) |
| (2.5) |
>
|
A := array( symmetric, 1..2,1..2, [ [1,x], [x,x^2] ] ):
op(1,eval(A));
|
| (2.6) |
| (2.7) |
| (2.8) |
| (2.9) |
|
|
参照
|
|
Array, Matrix, Vector, type[array], table, matrix, vector, linalg, print, map, indices, entries
|
|