Hi,
I have a question on the setup of the
tridiagonal system in the cubic interpolation (under the choice 'Spline'
for derivative approximation. The tridiagonal system looks a bit
different from the one suggested in the literature. In particular, the
middle components of the vector tmp_, the right hand side vector of
tridiagonal system, are caculated as:
std::vector<Real> dx(n_-1), S(n_-1);
for (Size i=0; i<n_-1; ++i) {
dx[i] = this->xBegin_[i+1] - this->xBegin_[i];
S[i] = (this->yBegin_[i+1] - this->yBegin_[i])/dx[i];
}
// first derivative approximation
if (da_==CubicInterpolation::Spline) {
TridiagonalOperator L(n_);
for (Size i=1; i<n_-1; ++i) {
L.setMidRow(i, dx[i], 2.0*(dx[i]+dx[i-1]), dx[i-1]);
tmp[i] = 3.0*(dx[i]*S[i-1] + dx[i-1]*S[i]);
}
Following the literature, one instead has (e.g. see Eq. 6.62 in Piterbarg-Andersen book V1 Chapter 6 Appendix):tmp[i] = 6.0*(S[i] - S[i-1]);
Am I missing something here? Or any reference you can point me to which derive what Quantlib implements?
Thanks,
SK
------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now.
http://goparallel.sourceforge.net/_______________________________________________
QuantLib-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-dev