template<typename Scalar_>
class Eigen::BjorckPereyra< Scalar_ >
Björck-Pereyra O(n^2) solver for square Vandermonde systems.
Solves V*a = f – polynomial interpolation: find the coefficients of the polynomial taking values f at the nodes – in O(n^2) operations and O(n) storage, via divided differences in the Newton basis followed by the basis change to monomials (Björck & Pereyra, 1970; Golub & Van Loan, Alg. 4.6.2). The transposed (dual, or moment) system \( V^T w = b \) is solved by the companion dual recurrences through the standard SolverBase idiom:
BjorckPereyra()
Definition Vandermonde.h:406
Matrix< double, Dynamic, 1 > VectorXd
There is no factorization: compute() stores the nodes (and flags exactly repeated or non-finite nodes through info()), and each solve runs the O(n^2) recurrences directly. Genuinely complex node sets are put in a deterministic Leja order to control growth in the Newton representation; real nodes, including complex scalars with zero imaginary parts, retain their input order and its useful monotonicity properties.
Despite the exponential conditioning of real-node Vandermonde matrices, the computed solution is often far more accurate than the conditioning suggests: for monotonically ordered nodes and a right-hand side with alternating signs the forward error is governed by a small relative-perturbation bound independent of the condition number (Higham, ASNA ch. 22).
- Template Parameters
-
| Scalar_ | a floating-point-like real or complex scalar supporting Eigen's scalar math hooks, including isfinite (and abs and log for complex node ordering). Integer types are rejected. |
- See also
- class Vandermonde