線形代数の例題
このチュートリアルでは,線形代数を含むWolfram言語による計算の例を多数紹介する.
行列の並べ替え
疎行列技術によっては行列を並べ替え,要素をブロックにグループ化されるように試みる.その後各ブロックごとに密行列技術を使って計算が行われる.行列をブロックに並べ替える簡単な方法のひとつに,各行の要素の総和によってソートするというものがある.これを以下に示す.
最大階数最小二乗解
行列方程式 を解くことは,行列計算の需要な問題のひとつである.その解法については「線形系の解法」で述べた. が× の行列なら, 個の未知数を持つ 個の線型方程式一式である. の場合は,方程式の数が未知数の数より多い過剰決定系である.最小二乗解を求める一般的な方法は「最小二乗法」で述べた.以下の例では,最大階数行列の過剰決定系の適切な解の別の求め方をいくつか紹介する.
このセクションの例題の解法は,入力として疎行列を与えたときにのみ正しく動作することに注意されたい.
最小二乗コレスキー
この方法は最小二乗解を求めるのに「コレスキー分解」を使う.行列 が最大階数を持つなら,解は以下のようにして求められる.
最小二乗QR
が最大階数の場合,問題をより正確に解くにはQR分解を使う.これを以下に示す.
1-ノルムと無限ノルムの最小化
行列方程式 が過剰決定形()の場合に,近似解を求める方法の多くでは,2-ノルムの最小化を行う.これは計算的に扱いやすくなる利点があるからである.ひとつの理由は,関数
が微分可能で,微分が線形操作であるということである.そのため,最小の解を求める線形系が形成できる.もうひとつの理由は,直交変換において2-ノルムが維持されるということである.これは,解くのがより簡単である可能性がある同様の問題が幅広く形成できるということを意味している.
しかし,1-ノルムや-ノルム等,他のノルムを最小化することで見つかる他の解も存在する.これらは,解が個々の問題に関する重要な性質を維持する可能性があるので,特定の状況において,より望ましいことがある.次の例では,これらのノルムを最小化する近似解を求める方法を示す.両方とも制約付き線形問題の最小値を求める方法を使う.これは特に線形計画法として知られる.
Wolfram言語では,線形計画法の解法には関数LinearProgrammingが使える.これを使うと,整数,有理数,機械精度の近時実数,任意精度の近似実数等,Wolfram言語がサポートしている種々の型の数の線形計画問題が解ける.さらに,内点法を使って,特に大規模な系を最小化するのに適した方法も利用できる.
このセクションで与えられている解法は,入力が密行列の場合に適している.これを疎行列用に変更するのは簡単である.これは内点線形計画法を十分に利用するために必要である.
このセクションで述べる方法は,解の他の制約を加えて拡張することもできる.
1-ノルム最小化
無限ノルムの最小化
-ノルムの最小化は1-ノルムの最小化と似ている.以下を最小化する の値を求める.
有限差分解法
偏微分方程式を解くひとつの方法に,特別な離散化を行い,有限差分で解くというものがある.次の例で,単位正方形における基本的なポアソン(Poisson)方程式の差分解法を考える.
メッシュ区分
ここでは,固有値の実践的な使用方法を例示する.目的はメッシュ/グラフの頂点を2つのサブ領域に分割し,各部分の頂点の数をおおよそ同じにし,その境界が辺を切断するのをなるべく少なくするというものである(2つの頂点が別々のサブ領域にあると,辺は切断される).ラプラシアン(Laplacian)を作成し,そのフィードラー(Fiedler)ベクトル(2つ目に小さい固有値に相当する固有ベクトル)を使って頂点を並べるというものがある.これらはグラフ区分において,より効率的な方法であり,固有ベクトルの計算は必要ないが,フィードラーを使う方法は重要である.
データ
メッシュのプロット
ラプラシアン
グラフ のラプラシアンは,× の疎行列である. はグラフ中の頂点の数である. の要素のほとんどはゼロであるが,対角要素は正の整数で,これは頂点の次数に対応している.ここで次数とは,ひとつの頂点につながっている他の頂点の数である.また,頂点 , が辺でつながっている場合,要素 は-1である.
フィードラー(Fiedler)ベクトル
各行の要素の総和はゼロであるので,ラプラシアン行列は固有値がゼロの準正定値行列である.2つ目に小さい固有値に対応する固有ベクトルはフィードラーベクトルと呼ばれる.
ノードの区分
NDSolveを使った行列関数
Wolfram言語の数値ソルバの重要な機能のひとつに,入力がベクトルや行列でも使えるということが上げられる.一般にこれは連立方程式の解法に使われるが,行列特有の問題の解法にも使える.ここでは,数値微分方程式ソルバNDSolveを使って行列関数のパラメータかされた解を求める例を示す.