LinearAlgebra[Map] - 行列やベクトルの成分に作用させることにより、式を手続きで写します
LinearAlgebra[Map2] - 行列やベクトルの成分に作用させることにより、式を手続きで写します
使い方
Map[filter](f, expr, arg2, ...)
Map2[filter](f, arg1, expr, arg2, ...)
パラメータ
filter - (オプション) ブール値の手続き; 関数 f のどの部分に適用するかを選択
f - 手続きまたは名前; expr の被作用子に適用する手続き
expr - 任意の式; 写される式
arg1 - f に渡す第 1 引数 (Map2 のみ)
arg2, ... - (オプション) f にさらに付け加える引数
|
説明
|
|
•
|
Map(f, expr) 関数は、f を expr の被作用子に適用します。
|
|
expr の i 番目の被作用子は、i 番目の被作用子に f を適用した結果に置き換えられます。これは、 expr のすべての被作用子に対して適用されます。
f が引数を 1 つ以上持つならそれらは、追加引数 arg2, arg3, ..., argn として呼び出し手順に含まれます。それらは、f に第2, 3,..., n 引数として渡されます。
|
•
|
Map2(f, arg1, expr) 関数は、expr の各被作用子毎に、arg1 が第 1 引数として f に渡され、expr の被作用子が、第 2 引数として渡され、arg3,..., argn は、第 3, ..., n 引数として渡される点を除いて Map と同じです。
|
•
|
Map と Map2 関数は、expr の任意の被作用子または expr 自身が行列またはベクトルならば、f はその行列またはベクトルの要素に適用され、この適用が成分ごとに行われることを除けば、それぞれ map と map2 関数と同じです。
|
|
さらに、行列やベクトルの要素に対する f の任意の適用が貯蔵に失敗すれば (たとえば、shape が対応する場所が変更できないことを示す場合)、その要素は変えられずに残されます。従って Map( ) と Map2( ) は上三角行列の要素を更新するため使うことができます。たとえば、単位三角行列の対角要素は、 Map( ) または Map2( ) によって更新されません。
|
•
|
Map か Map2 コマンドにオプション filter パラメーターが使用され、expr を構成するものが行列かベクトルである場合、関数 f が適用される。特に、f は expr の filter が true を返す位置で適用されます。
|
|
|
例
|
|
>
|
with(LinearAlgebra):
A := Matrix([[1,2,3],[0,1,4]], shape=triangular[upper, unit]);
|
| (2.1) |
| (2.2) |
>
|
evalb(addressof(A) = addressof(%));
|
| (2.3) |
>
|
B := <<1,2,3>|<4,5,6>>;
|
| (2.4) |
>
|
Map2[(i, j) -> evalb(i = 1)]((x,a) -> a*x, 3, B);
|
| (2.5) |
>
|
Map(x -> x+1, g(3, A));
|
| (2.6) |
|
|