LinearAlgebra[BackwardSubstitute] - 上側行階段形 A に対して A . X = B を解きます
LinearAlgebra[ForwardSubstitute] - 下側行階段形 A に対して A . X = B を解きます
使い方
BackwardSubstitute(A, B, t, ip, outopts)
ForwardSubstitute(A, B, t, ip, outopts)
パラメーター
A - 階段形の行列
B - (オプション) 行列またはベクトル
t - (オプション) free = symbol の形の等式; 無限解集合をパラメータ表示するための変数
ip - (オプション) BooleanOpt(inplace); A が正方行列のとき、出力がパラメータ B を上書きするかどうか指定
outopts - (オプション) 形式 outputoptions = listの形の等式; 変換行列 'C' に対する constructor オプション
|
説明
|
|
•
|
関数 BackwardSubstitute(A, B)。この関数は上側階段形 A に対して、式 A . X = B の解を返します。
|
|
関数 ForwardSubstitute(A, B)。この関数は下側階段形 A に対して、式 A . X = B の解を返します。
|
|
B の各列 b に対して、このルーチンは A . x = b の解 x を得るために前方に(または後方に)代入を実行します。返される行列 (または、単独に、ベクトル) 解はこれらの解ベクトルから成っています。ある列 b に対してそのような解ベクトルが存在しないならば (たとえば、A が上三角行列 (または下三角行列) でなく、しかも代入が正しくない場合)、エラーが返されます。
|
|
代入により、一意的な解が得られない場合、可能な解の無限族は次のようにパラメータ表示されます。
|
|
* B がベクトルならば、解は必要に応じて t[1], t[2], 等によりパラメータ表示されます。
|
|
* B が行列ならば、解行列の j 番目の列は t[1,j], t[2,j], 等によりパラメータ表示されます。
|
|
パラメータ t が提供されないときは、割り当てられていない名前 _t<#> が 生成されます。たとえば、_t0 , _t1.._t<i> がすべて割り当てられているが、_t<i+1> は割り当てられていないとき、_t<i+1> が生成される名前です。
|
|
B が呼出し手順に含まれないならば、A は拡大行列であると仮定されます。
|
•
|
inplace オプション (ip) は結果がどこに返されるかを決定します。inplace=true と与えられ、A が正方行列ならば、結果は 2 つ目の引数 B に上書きされます。inplace=false が与えられるか、このオプションを手続きを呼び出し手順に含まないとき、結果は新しい行列またはベクトルに返されます。
|
|
条件 inplace=true は inplace と略記することができます。
|
|
inplace オプションは注意して使用しなければなりません。なぜなら、もし演算が失敗した場合、もとの行列引数は壊れてしまうかもしれないからです。
|
•
|
outputoptions オプション (outopts) はその結果を作成する行列またはベクトル・コンストラクタに追加情報 (readonly, shape, storage, order,datatype, attributes) を提供します。
|
•
|
inplace と outputoptions オプションを同時に使うことはできません。
|
•
|
この関数は LinearAlgebra パッケージの一部分ですから、コマンド with(LinearAlgebra) を実行した後のみ、BackwardSubstitute(..) の形で使うことができます。ただし、コマンドの長い形 LinearAlgebra[BackwardSubstitute](..) を使えばいつでもアクセスすることができます。
|
|
|
例
|
|
>
|
with(LinearAlgebra):
A := <<1,0,0,0>|<0,1,0,0>|<2,-1,0,0>|<0,0,1,0>|<-2,1,-2,0>|<3,1,2,0>>;
|
| (2.1) |
| (2.2) |
| (2.3) |
>
|
B := <<1,0>|<0,1>|<0,1>|<0,1>>:
X := <<1,-1>|<0,3>>:
ForwardSubstitute(B,X,free='x');
|
| (2.4) |
>
|
C := <<1,0,0>|<0,1,0>|<1,1,1>>:
Y := <3,2,4>:
BackwardSubstitute(C,Y,inplace);
|
| (2.5) |
| (2.6) |
|
|