How to | 行列を作成する方法
Wolfram言語において行列はリストで表される.行列は,{ } 表記を使って直接入力,公式から構築,データファイルからインポートのいずれかの方法を使って入力することができる.Wolfram言語には対角行列,定数行列等特別の型を持つ行列を作成するコマンドも含まれている.
MatrixFormを使って行列表記で結果を表示することができる:
expr//funは,fun[expr]を入力するもうひとつの方法である.funが形式に関する関数である場合に使用すると便利なことがある.
以下ではTableを使って および の値の格子を作成する:
Wolfram言語における行列は,数字の行列に限られているわけではない.公式のように記号的な項目を行列に含めることも可能である:
行列を作成してそれを割当てと一緒に保存する場合に,これをMatrixFormを使ってフォーマットすることと組み合せて使わないようにすることが大切である.カッコを使う:
matは行列のように表示されるが,計算上では行列のようには作動しない.例えば,以下の計算では行列の掛け算を行わない:
matの値は,FullFormを使って検証することができる:
matはフォーマットを行うラッパーMatrixFormも含んでおり,これがmatを行列として作動させないようにしていることが上から分かる.
行列を作成するためのもうひとつの方法としてデータファイルをインポートするという方法がある.これは,Table (.dat),CSV (.csv),TSV (.tsv)等の表形式を使って行える.行列はExcelのスプレッドシート(.xls)から読むこともできる.
以下はImportStringを使ってCSV形式の文字列を行列にインポートした例である.ファイルからのインポートはImportを使って行われる:
Wolfram言語は,科学的あるいは医学的なデータ形式である HarwellBoeing,MAT,HDF,NASACDF,FITS等,その他の数多くの形式もサポートしている.
行列を作成する方法がプログラムの効率性に大きな影響を与えることもある.最大の効率を得るためには,行列に付け加えたり不必要な作成操作を行ったりすることを避け,可能な場合にはリストに記載できる操作を使用するべきである.
1度の計算で行列を作成する方がずっと速い.Forループを使用する状況になった場合には常にTableのようなその他の構築を使ってこれを置き換える方法がないかをチェックしてみた方がよい:
以下の例では,ゼロの 行列を作成し,これをループで充填する.ここで行うゼロの行列の作成はまったく不必要な操作である:
行列の各行に対して前駆体を1度作成し,それをリストに記載可能な操作と一緒に使用する方がずっと速い:
行列が大きく,多くの要素が同じ(例えば,ゼロ)である場合,SparseArrayで生成される疎行列を使って作業することを考慮すべきである.