QuantLib
QuantLib copied to clipboard
Cubic Interpolation Spline
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
<http://quantlib.sourcearchive.com/documentation/1.1-1/namespaceQuantLib_af4cc4ef40b52c17cc455ead2a97aedb3.html#af4cc4ef40b52c17cc455ead2a97aedb3> 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 for (Size =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 L.setMidRow(i, dx[i-1], 2.0*(dx[i]+dx[i-1]), dx[i]); tmp[i] = 3.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,