疎な(スパース)配列:線形代数
多くの大規模な線形代数アプリケーションは多くの要素を持つ行列を含んでいるが,非零要素のものは比較的少ない.Mathematica ではSparseArrayオブジェクトを使って「リストの操作:疎な(スパース)配列」で説明してあるようにこれを効果的に表現することができる.SparseArrayオブジェクトは非零の値がどこに表れるのかを指定する規則のリストを使って作用する.
| SparseArray[list] | 通常のリストのSparseArrayバージョン |
| SparseArray[{{i1,j1}->v1,{i2,j2}->v2,...},{m,n}] |
| 要素 が値 を持つ m×n の疎な配列 |
| SparseArray[{{i1,j1},{i2,j2},...}->{v1,v2,...},{m,n}] |
| 同じ疎な配列 |
| Normal[array] | SparseArrayに対応する通常のリスト |
疎な配列の指定
「リストの操作:疎な(スパース)配列」で説明してあるように,パターンを使って疎な配列中の要素集団を指定することができる.また任意の階数のテンソルに対応する疎な配列を作ることもできる.
これで148個の非零要素がある50×50の疎な数値行列を作る.
| Out[1]= |  |
| Out[2]= |  |
これは行列中の大きい方から4番目までの固有値である.
| Out[3]= |  |
| Out[4]= |  |
通常の配列と同じように部分を抽出することができる.
| Out[5]= |  |
通常のリストに対するのと同じようにSparseArrayに対してもほとんどの標準的な構造操作を行うことができる.結果が疎である場合はSparseArrayオブジェクトが返されるのが通例である.
SparseArrayオブジェクトに直接行える構造操作の例
これは

の第1列を与える.ここには非零要素は2つしかない.
| Out[6]= |  |

の第1列中の各要素に3を足す.
| Out[7]= |  |
| Out[8]= |  |
| Out[9]= |  |
疎な配列を得る典型的な方法
| Out[10]= |  |
| Out[11]= |  |
| Out[12]= |  |
| Out[13]= |  |
| Out[14]= |  |
| Out[15]= |  |
| Out[16]= |  |
| Out[17]= |  |
機械精度の疎な数値行列について,Mathematica はMatrix Market形式(.mtx)やHarwell-Boeing形式のような標準的なファイル形式をサポートする.これらの形式の行列はImportやExportを用いてインポートしたりエキスポートしたりできる.