Source code for low_rank_toolbox.krylov.data.optimal_poles
"""Optimal poles data extraction for rational Krylov methods.
Author: Benjamin Carrel, University of Geneva, 2023
"""
import os
import scipy.io as sio
# Path to the data
path = os.path.dirname(os.path.abspath(__file__)) + "/"
[docs]
def extract_optimal_poles(nb_poles: int) -> list:
"""
Extract the optimal poles precomputed in MATLAB.
Parameters
----------
nb_poles : int
Number of poles to extract. Must be in [1, 15]
"""
# Check input
if nb_poles < 1 or nb_poles > 15:
raise ValueError("nb_poles must be in [1, 15]")
# Extract MATLAB .mat data
data = sio.loadmat(path + f"optimal_poles_{nb_poles}.mat")
poles = data["opti_poles"].squeeze().tolist()[-1].squeeze().tolist()
if nb_poles == 1:
poles = [poles]
return poles