cubic interpolation

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

cubic interpolation

Sk Wong
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
Reply | Threaded
Open this post in threaded view
|

Re: cubic interpolation

Luigi Ballabio
Apologies for the delay; I didn't find the time to go back and check the math. I see from <http://www.wilmott.com/messageview.cfm?catid=4&threadid=98075&forumid=1> that you solved the issue, though. Is this correct?

Luigi


On Thu, Jan 29, 2015 at 5:59 AM, Sk Wong <[hidden email]> wrote:
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




--

------------------------------------------------------------------------------
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