おける対象資産の値を返します。分岐構造を取り扱います。(2項モデルであれば2、3項モデルなら3)。このメソッドは引数を取りませんが、その理由は、分岐数は基本的に定数になるという前提の為です。インデックスを特定します。インデックスを返します。その例を下記の図に示します。)メソッドと同じ引数を取り、対応するNodeへの分岐確率を返します。ベースクラスのような設計にしていました。それでも作動していましたが、数値計算プログラムとしては死に値するような罪を犯していました。)メソッドなど)を、仮想関数として宣言していました。(注:なぜ、これが問題なのか分からない方は、簡単な説明の例として下記[1](Veldhuizen,2000)の文献を読んでみてください。Modelのカリブレーションに、小さな氷河が溶けるのを待つような時間がかかるのを見て、問題に気付きました。その結果、実装をやり直すことにしました。ような実装に変更しました。)メソッドだけ残しています。クラステンプレートにより提供されています。)メソッドを使って、同じ様なプログラムコードが反復するのを避けています。};これは設計のやり直しではありません。既存のクラス階層はそのまま残しました。説明の所で判ると思いますが、CRTPに転換する事で、やや複雑なプログラムコードになりました。計算速度の点では十分見返りがありました。新しい実装方法では、10倍程度までパフォーマンスの向上が見られました。(私自身も、問題の原因を作った者のひとりでしたので)。すると、コードをさらに単純化する機会を失っていたようです。冷静になって考えると、Treeのベースクラスが派生クラスで定義されたメソッドを呼び出していない事に気づくべきでした。パターンでコードを単純化する事も可能でした。QuantLibライブラリーのデザインを見直す際に、覚えておかないといけない修正点です。よって名付けられ有名になりましたが、そのデザイン自体は彼の著作以前から存在していました。(下記[3]のGamma氏らの著作を参照)その考え方をプログラムコードにすると、以下の様なものになります。)メソッドを宣言していない事に注目して下さい)。このような動作が行われるのか、コンパイラーで行われる作業を見ることによって理解する事ができます。)メソッドを定義していませんので、ベースクラスから継承している事になります。クラスの参照に型変換します。メソッドを呼び出しました。それは型変換がうまく行った事をしており、目的としていたオブジェクトへの参照を持つことができました。呼び出しとしてコンパイルするので、その結果、意図していたメソッドが呼び出される事になります。inline関数とみなし、それに応じた最適化を行います。呼び出しはうまく行かないからです。)が何の事か判りません。)メソッドと理解してコンパイルしてしまいます。いった不都合を回避させてくれます。使ってベースクラスを派生クラスに型変換する事によって、循環がクローズされます。)メソッドが呼び出せる。1995.<ライセンス表示>QuantLibのソースコードを使う場合は、ライセンス表示とDisclaimerの表示が義務付けられているので、添付します。