Array - 配列の作成
|
使い方
|
|
Array(indfncs, dims, init, opts)
|
|
パラメータ
|
|
indfncs
|
-
|
(オプション) プロシージャ; インデックス関数
|
dims
|
-
|
(オプション) 整数の範囲; 次元
|
init
|
-
|
(オプション) Maple プロシージャ、関数、テーブル、array、リスト、Array、方程式のセット、代数データ型の式; Array の初期値
|
opts
|
-
|
(オプション) keyword = value 形式の方程式; Array の追加プロパティを指定
|
|
|
|
|
説明
|
|
•
|
Array(..) 関数は配列データ構造のコンストラクタです。Array は rtable として実装され、array、table、Matrix、Vector などの他の Maple オブジェクトとは区別されます。Array は非推奨の array に代わるものです。
|
•
|
使い方の各パラメータはオプションです。パラメータを 1 つも指定しない場合、0 次元の空の配列が返されます。
|
|
dims および init を指定しない場合、または init にスカラー値のみを指定した場合、単一の要素を含む 0 次元の配列が作成されます。
|
•
|
以降の節では、各パラメータを指定する場合の指定可能な値について説明します。
|
|
インデックス関数は、値の取り出しや格納のために Array にインデックスを付けるために使用されます。Array はインデックス関数を持たないことも、複数持つこともできます。インデックス関数は Array 作成時に名前によって指定されます。インデックス関数の名前は必ず "index/indfnc" という形式を取ります。インデックス関数 indfnc を指定する場合、名前の indfnc 部分のみを指定します。
|
|
注意: 初期化子 (下記参照) が既存の Array である場合、インデックス関数は引き継がれません。
|
|
インデックス関数は、組み込みのものを使用することも、ユーザーが定義することもできます。インデックス関数についての詳細は、ArrayIndFns を参照してください。
|
|
Array の次元は 0 ~ 63 です。各次元 dims は整数で指定する必要があります。
|
|
init パラメータは Array の初期値を次のいずれかの形式で指定します。
|
–
|
値のリスト (多次元配列の場合、ネスト化したリストが使用されます)。
|
–
|
既存の Array、Matrix、または Vector
|
–
|
(indices) = value 形式の方程式のセット
|
|
初期値を値のリストまたは既存の Array、Matrix または Vector として指定した場合、初期値の次元数は上下限 (指定されている場合) と一致する必要があります。
|
|
初期値をプロシージャ、テーブル、または方程式のセットとして指定した場合、次元を指定する必要があります。また、初期化子のインデックスがこれらの次元内に収まっていなければなりません。
|
|
プロシージャが指定された場合、その関数はインデックス関数によって特定されたインデックスの各メンバーに対して呼び出されます。関数は指定された Array の要素に対して、値を返す必要があります。
|
|
それぞれの初期値はどのような Maple 式でもかまいませんが、この式を Array の datatype の値に対して評価できなければなりません (下記の「オプション」を参照)。機械精度浮動小数点の配列の場合、これは機械精度浮動小数点の数値か、未定義またはプラスマイナス無限大を表す特殊な式のいずれかである必要があります。機械精度整数の配列の場合、マシン整数に対して式を評価できる必要があります。datatype に対する評価に失敗すると、エラー になります。
|
|
transpose オプション (下記参照) を指定した場合、このリストは 2 つ以上の多次元配列に対する初期化子の形式をとります。
|
|
初期化子のリストから上下限が求められる場合、各次元の上下限はその次元の最初のオブジェクトから求められます。たとえば、2 次元配列の場合、行の数はメインリストのサブリストの数によって決まります。列の数は最初のサブリストの要素数によって決まります。transpose を指定した場合、次元の決定は最後の次元 (つまり、メインリスト内のサブリストの数によって決まった列数) から行います。
|
|
次元に対する初期化子の値が少ない場合、その次元の残りに対しては、その配列タイプのデフォルトが設定されます (ゼロまたは fill オプション (下記参照) で指定された値、またはインデックス関数で指定された値)。初期化子の値が多い場合は、例外が発生します。
|
|
0 次元配列は、リテラル値 (つまり、リストの 0 レベルのネスト) を指定することで初期化することができます。たとえば、Array(2) は単独要素 2 を持つ 0 次元の配列を作成します。この形式は、初期化子の他の形式と確実に区別できるタイプの値の場合にのみ使用できます。より複雑なタイプの 0 次元配列を作成する場合は、fill オプションを使用する必要があります (たとえば、Array(fill=[2, 3]) を使用して単独値 [2, 3] を持つ 0 次元配列を作成)。
|
|
scalar 記憶域 (下記の「オプション」を参照) を持つ配列は、通常の方法で初期化されます。いずれの形式の初期化子も機能しますが、最も効率の良い方法は方程式が 1 つのセットか、fill パラメータを使用する方法です。
|
•
|
作成後に、エントリおよび配列プロパティの一部を変更することができます。詳細は 配列の割り当て および 配列オプション を参照してください。
|
•
|
Array の要素または要素グループへのアクセスに関する詳細は、配列インデックス を参照してください。
|
•
|
Maple では、小さな配列のみインラインで表示されます。小さな配列は 1 次元または 2 次元のオブジェクトで定義され、それらの次元の範囲は 1..25 (TTY 版 Maple) または 1..10 (GUI 版 Maple) です。このサイズより大きい次元の配列はプレースホルダーを使用して表示されます。プレースホルダーの内容を表示する方法については、structuredview を参照してください。
|
|
Maple で常に rtables をインラインで表示するように環境を変更するには、Maple 初期化ファイル (maple 参照) に interface(rtablesize=infinity) コマンドを含めます。
|
|
|
オプション
|
|
|
opts パラメータを使用して、配列に対して 1 つまたは複数の追加プロパティを指定します。プロパティを含める場合、keyword = value という形式の方程式でなければなりません。この節では、使用できるオプションについて説明します。
|
|
Array 要素のデータ型を指定します。指定できるデータ型は integer[n]、float[n]、complex[n]、または任意の Maple データ型 (type()または :: で認められたもの) です。
|
|
integer[n] の場合、n は整数当たりのバイト数を表す 1、2、4、または 8 のいずれかです。float[n] および complex[n] の場合、n として使用できる値は現在 8 のみです。デフォルトのデータ型は Maple データ型 anything です。
|
|
注意: 初期化子が既存の配列で datatype = value を指定しない場合、初期化子のデータ型が引き継がれます。
|
|
配列の記憶域を指定します。使用できる値は次のとおりです。
|
sparse
|
sparse[upper]
|
sparse[lower]
|
empty
|
scalar
|
diagonal
|
band[b1,b2]
|
rectangular
|
triangular[upper]
|
triangular[upper,strict]
|
Hessenberg[upper]
|
triangular[lower]
|
triangular[lower,strict]
|
Hessenberg[lower]
|
|
|
|
storage のデフォルト値は最後のインデックス関数によって決まります。初期化子が rtable (Array、Matrix、または Vector) で storage オプションを含めない場合、初期化子がいずれかのタイプのスパース記憶域を持っていれば、作成される配列はスパース記憶域となります。それ以外の場合、配列は長方形形状になります。
|
|
構造体内部での順序付けを指定します。使用できる値は C_order および Fortran_order です。デフォルトの順序は Fortran_order です。
|
|
注意: 初期化子が既存の配列で順序を指定しない場合、順序は初期化子から引き継がれます。
|
|
配列が mutable (可変)であるかどうかを指定します。使用できる値は true または false です。readonly=true を含める場合 (または単に readonly でも同じ。これは Array が不変であることを指定し、Array 要素に変更が加えられようとすると例外が発生します)。
|
|
注意: 初期化子が既存の Array の場合、readonly は初期化子から引き継がれません。これは、Array をコピーする一般的な用途が読み取り専用配列の書き込み可能なバージョンを作成することだからです。
|
|
配列を作成する際に設定する属性を指定します。setattribute に対して有効な引数であれば、どれでも属性値として使用できます。デフォルトは属性なしです。
|
|
注意: 初期化子が既存の Array で、かつ属性を指定しない場合、初期化子の属性が引き継がれます。
|
|
transpose または transpose=true を含める場合、配列を設定する前 (次元が指定されていない場合は次元が決められる前) に初期化子が転置されます。つまり、初期化子が列優先順序であると仮定されます。
|
|
未指定の配列要素を設定するためのデフォルト値を指定します。この値は、初期化子の値と同じ評価要件を満たしている必要があります。
|
|
注意: fill の値は、インデックス関数があるにもかかわらず指定されない配列要素を設定するためにのみ使用されます。たとえば、fill 値は上三角配列の下三角の設定には指定されません。スパース行列の場合、fill 値は常に無視されます。
|
|
注意: transpose オプションと fill オプションは単なるコンストラクタオプションです。これらは op(4, ...) コールの結果の一部としては返されません。
|
|
|
スレッド安全性
|
|
•
|
Maple 15 から、Array コマンドはスレッドセーフになりました。
|
|
|
例
|
|
| (1) |
>
|
B := Array(2..3,-1..1,[[1,2,3],[4,5,6]]);
|
| (2) |
| (3) |
| (4) |
>
|
C := Array(triangular[upper], 1..3,1..4,fill=1);
|
| (5) |
>
|
F := Array(symmetric,1..3,1..3);
|
| (6) |
| (7) |
>
|
G := Array([1.2,1,4.78],datatype=float[8]);
|
| (8) |
|
|
Download Help Document
Was this information helpful?