古いフレームワークChapter7で既に説明した通り、当初の基本計画は、Treeを使ったモデルと、有限差分法を使ったモデルを、共通のフレームワーク(訳注:Latticeのオブジェクトモデル)の下で作り上げようとしました。それが実を結ぶことはありませんでした。数学の概念を中心としたものに近づいて行きました。以下のセクションで、それらについて分析していきます。Arrayクラス(配列クラス)の説明から始めるべきかもしれません。Aで行うのでご容赦下さい。ように離散化する為に使われているという事だけ述べておきます。(訳注:ここでは微分演算子あるいは有限差分演算子の事。ここで私が数学的概念の説明をすれば、聖歌隊の人にキリスト教の説教をしているようなものなので、それは最小限に留めます。(もし、有限差分法の数学的な説明が必要であれば、それに関するいくつかの専門書を参考にして下さい。変換する作用素を考えます。離散的な微分を行う操作(即ち有限差分)は線形作用素なので、行列で表現できます。Operator(有限差分演算子)は微分の厳密な離散化を与えるものではなく、単に近似を行っているだけです。して、右辺の誤差項は、グリッドの間隔を狭くすれば、小さくすることが可能です。Operator(有限差分演算子)を用意しています。呼ばれており、以下のように定義されています。(ここでは、グリッド間隔が均等と仮定)。なることが分かります。関数値にのみ依存しています(最初のインデックスと最後のインデックスの取扱いがどうなるかは、今の所無視します)。Operator(三重対角演算子)で表現できます。\]この行列は、いくつかの望ましい性質を持っています。(Black-Scholes-Merton方程式の有限差分スキームにも登場します)、三重対角演算子になります。TridiagonalOperatorクラスを作りました。表現方法は、三重対角の構造を反映しています。コンストラクターおよび、最初のいくつかのメソッド群は、Operatorインスタンスを生成し、その内容をチェックする為のものです。setter(変数を設定するメソッド)を使って値を代入し、それをそのまま信用して使います。ついて同じ作業を行います。2番目のコンストラクターは、3つの配列の値の設定を一度に全部やってしまいます。(訳注:対角成分がすべて1の単位行列を生成している)。)メソッドが返す、TridiagonalOperatorへの参照は、Disposableクラステンプレートの中に取り込まれています。これは不要なコピーを避ける為に取られた方法ですが、間違ったやりかたでした。Aを参照して下さい)。各インスペクター関数の役割は明確で、それぞれ対応するメンバー変数の値を返します。)メソッドが、インターフェースの中で中心的な役割を負っています。