Selecting a finite SISO AAK/Nehari rational candidate ===================================================== .. admonition:: Tutorial goal Turn the finite Schmidt-pair and rational-bridge diagnostics into a tolerance-based candidate-selection workflow. .. note:: New to the terminology? See the :doc:`lattice DSP concept map <../../algorithms/concept_map>` and the :doc:`causality/data-use guide <../../theory/causality_and_data_use>` for how online, offline, block, and MIMO examples should be read. Context ------- The Schmidt-pair tutorial visualizes the singular direction that blocks lower-rank approximation. This page uses a practical candidate workflow: choose a rank, build the finite Nehari Hankelized tail, fit a rational recurrence, and decide whether the candidate meets accuracy and stability thresholds. This is still a finite-dimensional candidate selector, not an exact infinite-dimensional AAK/Nehari solver. The reusable logic is exposed as ``finite_nehari_rational_candidates`` and ``select_finite_nehari_candidate``. Its purpose is to make the finite-section criteria explicit: singular-value target, Hankelized tail error, rational realization error, and pole radius. Key idea and equations ---------------------- For candidate rank ``r``, the tutorial reports .. math:: \sigma_{r+1},\qquad \frac{\|\gamma-\widehat\gamma_r\|_2}{\|\gamma\|_2},\qquad \frac{\|\gamma-g_r\|_2}{\|\gamma\|_2},\qquad \max_i |p_i|. Here ``\widehat\gamma_r`` is the Hankelized finite Nehari tail, ``g_r`` is the rational recurrence realization, and ``p_i`` are the fitted poles. The first rank satisfying all tolerances is selected. How to read the result ---------------------- Look for the first accepted rank and verify that its rational error is below tolerance while the fitted poles remain inside the unit disk. Run command ----------- .. code-block:: bash python examples/aak_siso_candidate_selection.py Source code ----------- .. literalinclude:: ../../../examples/aak_siso_candidate_selection.py :language: python :linenos: