cumulative_energy()

cumulative_energy()#

cumulative_energy(singular_values, threshold: float = 0.9999, plot: bool = True, right: int = None, ax: Axes = None, **kwargs)[source]#

Compute the number of singular values needed to surpass a given cumulative energy threshold.

The cumulative energy of \(r\) singular values is defined by

\[\kappa_r = \sum_{i=1}^r\sigma_i^2 \bigg/ \sum_{j=1}^k\sigma_j^2.\]

This function determines the smalled \(r\) such that \(\kappa_r \ge\) threshold.

Parameters:
singular_values(n,) ndarray

Singular values of a snapshot matrix, e.g., scipy.linalg.svdvals(states).

thresholdfloat or list[float]

Energy capture threshold(s). Default is 99.99%.

plotbool

If True, plot the cumulative energy and the capture threshold(s) against the singular value index (linear scale).

rightint or None

Maximum singular value index to plot (plt.xlim(right=right)).

axmatplotlib.Axes or None

Axes to plot the results on if plot=True. If not given, a new single-axes figure is created.

kwargsdict

Options to pass to matplotlib.pyplot.plot().

Returns:
ranksint or list[int]

Number of singular values required to capture the specified energy.