LinearAlgebra[GenerateMatrix] - 方程式から係数行列を生成します
使い方
GenerateMatrix(eqns, vars, aug, outopts)
パラメータ
eqns - (線形) 方程式または数式のリスト、または、集合
vars - 方程式の変数のリスト、または、集合
aug - (オプション) BooleanOpt(augmented); 結果がどのようにかを指定する
outopts - (オプション) outputoptions=list 形の等式; 結果オブジェクトに対する constructor オプション
|
説明
|
|
•
|
GenerateMatrix(eqns, vars) コマンドは、未知数が vars の方程式あるいは数式の eqns からの係数行列および右辺のベクトルを生成します。方程式ではなく、eqns の中に数式が記載されている場合、右辺は 0 である方程式として扱われます。
|
•
|
eqns の中の各方程式あるいは数式は、指定された変数 (vars) および同次でない部分において同次 (1 次) の部分へ分離します。
|
•
|
拡大オプション (aug) は結果が行列-ベクトルの組みか、拡大行列のいずれかで返されるかを決定します。augmented もしくは augmented=true と与えられた場合、方程式の右辺はその結果として得られる行列の最後の列として返されます。augmented=false と与えられるか、このオプションが呼び出し手順に含まれないならば、返される行列は係数行列で、返されるベクトル 1 次連立方程式の右辺の非斉次な部分です。
|
|
拡大でない場合、 vars のもとの変数はベクトル x の対応する成分として代入されるとすると、もとの 1 次連立方程式は次の行列方程式と同値です。
|
A . x = b
|
ただし、A は係数行列、ベクトル b は連立方程式の右辺に対応しています。
|
•
|
outputoptions オプション outopts はその結果を構成する Matrix コンストラクタに追加の情報 (readonly, shape, storage, order,datatype, attributes) を与えます。
|
•
|
この関数は LinearAlgebra package の一部ですから、コマンド with(LinearAlgebra) を実行した後にのみ GenerateMatrix(..) の形で使うことができます。ただし、コマンドの長い形 LinearAlgebra[GenerateMatrix](..) を使えばいつでもアクセスすることができます。
|
|
|
例
|
|
>
|
with(LinearAlgebra):
sys := [ 3*x[1]+2*x[2]+3*x[3]-2*x[4] = 1,
x[1]+ x[2]+ x[3] = 3,
x[1]+2*x[2]+ x[3]- x[4] ]:
var := [ x[1], x[2], x[3], x[4] ]:
(A, b) := GenerateMatrix( sys, var );
|
| (2.1) |
| (2.2) |
>
|
GenerateMatrix( sys, var, augmented=true );
|
| (2.3) |
| (2.4) |
>
|
eqns := [ 18*x(t) - 2*y(t) = diff(x(t), t),
12*x(t) + 7*y(t) = diff(y(t), t) ];
|
| (2.5) |
>
|
GenerateMatrix(eqns, [x(t), y(t)] );
|
| (2.6) |
|
|