62 assert((times.size() >= num_sample_points) &&
"must have sufficient number of sample times");
63 assert((samples.size() >= num_sample_points) &&
"must have sufficient number of sample points");
64 assert((derivatives.size() >= num_sample_points) &&
"must have sufficient number of derivatives");
67 unsigned num_t, num_s, num_d;
70 num_t =
static_cast<unsigned>(times.size()-1);
71 num_s =
static_cast<unsigned>(samples.size()-1);
72 num_d =
static_cast<unsigned>(derivatives.size()-1);
76 num_t = num_s = num_d = num_sample_points-1;
83 for(
unsigned int ii=0; ii<num_sample_points; ++ii)
85 space_differences(2*ii,0) = samples[ num_s-ii];
86 space_differences(2*ii+1,0) = samples[ num_s-ii];
87 space_differences(2*ii+1,1) = derivatives[num_d-ii];
88 time_differences(2*ii) = times[ num_t-ii];
89 time_differences(2*ii+1) = times[ num_t-ii];
93 for(
unsigned int ii=1; ii< num_sample_points; ++ii)
95 space_differences(2*ii,1) = (space_differences(2*ii,0) - space_differences(2*ii-1,0)) / (time_differences(2*ii) - time_differences(2*ii-1));
100 for(
unsigned int ii=2; ii < 2*num_sample_points; ++ii)
102 for(
unsigned int jj=2; jj <=ii; ++jj)
104 space_differences(ii,jj) =
105 (space_differences(ii,jj-1) - space_differences(ii-1,jj-1))
107 (time_differences(ii) - time_differences(ii-jj));
120 Vec<ComplexT> Result = space_differences(2*num_sample_points - 1,2*num_sample_points - 1);
121 for (
int k = 2*
static_cast<int>(num_sample_points) - 2; k >= 0; --k)
122 Result = (Result*(target_time - time_differences(k)) + space_differences(k,k)).eval();
Vec< ComplexT > HermiteInterpolateAndSolve(ComplexT const &target_time, const unsigned int num_sample_points, const TimeCont< ComplexT > ×, const SampCont< ComplexT > &samples, const SampCont< ComplexT > &derivatives, ContStart shift_from=ContStart::Back)
Estimates the root to interpolating polynomial.
Definition interpolation.hpp:60
Eigen::Matrix< NumT, Eigen::Dynamic, 1 > Vec
A dynamically-sized column vector of NumT.
Definition eigen_extensions.hpp:296
Eigen::Matrix< NumT, Eigen::Dynamic, Eigen::Dynamic > Mat
A dynamically-sized matrix of NumT.
Definition eigen_extensions.hpp:298