Vector Fitting
Algorithm
The VF formulation avoids the ill-conditioning problems encountered with some alternative approaches, as the formulation is given in the form of simple fractions (instead of polynomials). Unstable poles are flipped into the left half plane to enforce stable poles. This makes VF applicable to high order systems and wide frequency bands.
VF identifies the poles {am},residues {rm}, and terms d and h (optional) of the least squares problem.
The poles are identified by solving the linear problem.
Where the poles in (2) are a set of initial poles. It can be shown that if (2) holds, the poles {am} of f(s) must be equal to the zeros of σ(s). The zeros are calculated by solving an eigenvalue problem, see PDF. The new poles are substituted in (2) and the pole relocation process is repeated until convergence. In addition, the columns of the system matrix are scaled to unit length in order to further improve the conditioning.
Finally, the residues and terms d, h in (2) are calculated by solving (2) with known poles, which is again a linear problem.
VF is applicable also to vectors of frequency responses (hence its name), which results in an approximation with a common pole set.
Remark 1:
The most recent version of Vector Fitting (vectfit2.m) uses a modified version of (2) which has a more relaxed non-triviality constraint (PDF).
Remark 2:
It has recently been shown [1.12] that the VF iteration process is essentially a reformulation of the Santhanan-Koerner iteration [1.13], but with partial fractions as basis functions instead of polynomials. The explicit usage of partial fractions gives the improved conditioning and also permits easy enforcement of stable poles by pole flipping.