Maple における線形代数計算
線形代数において、計算は概念と同じくらい重要です。Maple はこれらの計算を行うことができますが、ユーザは方法を選び結果をどう解釈するかを知る必要があります。
Maple は線形代数の計算を行う 2 つの選択肢を提供します。1 つは linalg パッケージ、もう 1 つは LinearAlgebra パッケージです。以下の段落でこれらの違いの概略を述べます。
注意: これらのパッケージに関する文書では、行列を表すのに、linalg パッケージのルーチンで用いられる 配列 に基づいた行列を matrix (小文字の "m")で、LinearAlgebra パッケージで用いられる rtable に基づいた Matrix (大文字の "M") で表すという約束を使います。この約束はベクトルを表す vector と Vector に似ています。
|
linalg パッケージについて
|
|
linalg パッケージは非常に多くの種類の線形代数の計算を行うことができる 100 個を越えるコマンドからなる手続きの集まりです。このパッケージには以下の特徴があります。
基本データ構造としての配列
このパッケージのルーチンで用いられる基本的なデータ構造は、配列です。配列は array(..) コマンドにより作られます。ベクトルや行列を作るコマンドがありますが、これらは array(..) コマンドの特別な場合にすぎません。このパッケージでは(単位行列やゼロ行列などの)特別な種類の行列を表すあらかじめ定義されたコマンドはありません。それらもまた array(..) コマンドを使って定義しなければいけません。
最終変数名評価
配列を含む式は「最終変数名評価」を用いて評価されます。配列がある変数名に割り当てられており、その変数名が別のコマンドで実行されたとき、表示される結果は配列自身ではなく、割り当てられた変数名で評価されます。変数に割り当てられた配列を表示するためには、eval(..) または print(..) コマンドを使わなければいけません。
行列代数の特殊な評価コマンド
linalg パッケージは行列代数の計算を行う多くのコマンドを含んでいます。しかしながら、行列の計算を行うのに簡略な表記を用いると、A+B のような行列を表す式は evalm(..) コマンドのパラメータとして与えない限り評価されません。特に行列の積の簡略な表記はevalm(..) コマンドと行列の積を表す特殊な演算子 &* の両方を必要とします。
抽象線形代数
抽象線形代数の計算は内部演算子と evalm(..) コマンドを用いて行うことができます。
数値を要素とする大きい行列を用いる計算能力の限界
計算線形代数のために、linalg パッケージは行列の要素として数値成分と記号成分の両方をとることができます。しかしながら、このパッケージのコマンドを用いて、数値を成分とする非常に大きい行列の計算を行う能力は限られたものです。
|
|
LienearAlgebra パッケージについて
|
|
LinearAlgebra パッケージは、linalg パッケージの機能のほとんどすべてを含むだけでなく、うまく定義されたデータ構造、特殊な行列を作る付加的なコマンド、そして改良された行列代数の計算を含む線形代数のコマンドの集まりです。また、特に大きい数値行列の計算を行うとき、より強力で効率的です。
基本データ構造としてのベクトルと行列
LinearAlgebra パッケージのルーチンで用いられる基本的なデータ構造は Vector (ベクトル) と Matrix (行列) です。これらはそれぞれ Vector(..) と Matrix(..) コマンド、もしくは ショートカット表記 (<a,b,c>) を用いて作られます。これらの実装は Maple の rtable データ構造 に基づいています。その結果、リスト、表や rtable に基づいた配列、linalg の matrix、linalg の vector は Vector や Matrix と互換ではありません。
特殊な種類の行列とベクトルに対するコマンド
LinearAlgebra パッケージには (ゼロ行列、単位行列、定数行列などの) 特殊な行列やベクトルを作るコマンドが含まれています。
行列代数における直接評価
LinearAlgebra パッケージは行列代数の計算を行う多くのコマンドを含んでいます。これに加えて、A+B, A.B, A-A のような 行列代数 における式は直接評価されます。このことは追加のコマンドや構文規則を学ぶ必要を軽減するという意義があります。
変数名の制御に対するモジュールの実装
LinearAlgebra ルーチンの集まりは モジュールとして実装されているので、with(..) コマンドを用いることによりこれらのコマンドの短い形の名前を使える環境になります。
大きい数値行列の効率的計算
Maple と数値アルゴリズムグループ (NAG) との提携により、LinearAlgebra パッケージで用いるための追加の数値アルゴリズムが Maple に含まれています。そのうえ、LinearAlgebra コマンドの呼び出し手順は、標準のフォーマットまたはある行列の性質を指定するオプションを含めて使うことができます。これらのオプションを呼び出し手順に含めることにより、計算のためのMaple のアルゴリズム選択を助けます。結果として、数値を成分とする大きい行列の計算効率 は大きく改善されます。
|
|
linalg と LinearAlgebra パッケージの間の選択
|
|
Maple の線形代数のコマンドの実装のどちらを使うかを決めるには、次の一覧を考慮して下さい。
•
|
linalg パッケージは抽象線形代数の計算を行うのに有用です。
|
•
|
linalg パッケージに比べて、LinearAlgebra パッケージは、
|
|
* いくつかの特殊な行列を作るコマンドを含んでいます。
|
|
* 行列代数の計算をよりユーザフレンドリーに行うことができます。
|
|
* 線形代数の計算、特に大きな数値行列を扱うときには、より強力で効率的です。
|
|
|
linalg と LinearAlgebra の間の変換
|
|
linalg パッケージは型 matrix と vector を用います(表に基づいた配列データ構造)。LinearAlgebra パッケージは型 Matrix と Vector を用います (rtable に基づいたデータ構造)。ベクトルと行列オブジェクトの 2 つの実装の間変換を行うには、次のいずれかの方法を用います。
Matrix から matrix への変換
convert(.., matrix) コマンドを用いて LinearAlgebra の Matrix を linalg の matrix に変換することができます。同様に、convert(.., vector) を用いて LinearAlgebra の Vector を linalg の vector に変換することができます。
matrix から Matrix への変換
convert(.., Matrix) コマンドを用いて linalg の matrix を LinearAlgebra の Matrix に変換することができます。同様に、convert(.., Vector) を用いて LinearAlgebra の vector を linalg の Vector に変換することができます。
代りに、 Matrix(..) コマンドにより LinearAlgebra パッケージで用いる型 Matrix を持つオブジェクトを作ることができます。このコマンドは linalg の matrix をパラメータとしてとることができるので、この方法を用いて型 matrix を持つオブジェクトを 型 Matrix を持つオブジェクトに変換することができます。同様に、Vector(..) コマンドを用いて型 vector を持つオブジェクトを型 Vector を持つオブジェクトに変換することができます。
|
|
Download Help Document
Was this information helpful?