Kernel interpolation between discrete points. More...
#include <ql/math/interpolations/kernelinterpolation.hpp>
Public Member Functions | |
template<class I1 , class I2 , class Kernel > | |
KernelInterpolation (const I1 &xBegin, const I1 &xEnd, const I2 &yBegin, const Kernel &kernel, const double epsilon=1.0E-7) | |
![]() | |
bool | empty () const |
Real | operator() (Real x, bool allowExtrapolation=false) const |
Real | primitive (Real x, bool allowExtrapolation=false) const |
Real | derivative (Real x, bool allowExtrapolation=false) const |
Real | secondDerivative (Real x, bool allowExtrapolation=false) const |
Real | xMin () const |
Real | xMax () const |
bool | isInRange (Real x) const |
void | update () |
![]() | |
void | enableExtrapolation (bool b=true) |
enable extrapolation in subsequent calls | |
void | disableExtrapolation (bool b=true) |
disable extrapolation in subsequent calls | |
bool | allowsExtrapolation () const |
tells whether extrapolation is enabled | |
Additional Inherited Members | |
![]() | |
typedef Real | argument_type |
typedef Real | result_type |
![]() | |
void | checkRange (Real x, bool extrapolate) const |
![]() | |
ext::shared_ptr< Impl > | impl_ |
Kernel interpolation between discrete points.
Implementation of the kernel interpolation approach, which can be found in "Foreign Exchange Risk" by Hakala, Wystup page 256.
The kernel in the implementation is kept general, although a Gaussian is considered in the cited text.
KernelInterpolation | ( | const I1 & | xBegin, |
const I1 & | xEnd, | ||
const I2 & | yBegin, | ||
const Kernel & | kernel, | ||
const double | epsilon = 1.0E-7 |
||
) |
The calculation will solve \( y = Ma \) for \(a\). Due to singularity or rounding errors the recalculation \( Ma \) may not give \( y\). Here, a failure will be thrown if
\[ \left\| Ma-y \right\|_\infty \geq \epsilon \]