scipy.linalg.interpolative.

interp_decomp#

scipy.linalg.interpolative.interp_decomp(A, eps_or_k, rand=True, rng=None)[Quelle]#

Berechnet die ID einer Matrix.

Eine ID einer Matrix A ist eine Faktorisierung, die durch einen Rang k, ein Spaltenindex-Array idx und Interpolationskoeffizienten proj definiert ist, so dass

numpy.dot(A[:,idx[:k]], proj) = A[:,idx[k:]]

Die ursprüngliche Matrix kann dann wie folgt rekonstruiert werden:

numpy.hstack([A[:,idx[:k]],
                            numpy.dot(A[:,idx[:k]], proj)]
                        )[:,numpy.argsort(idx)]

oder über die Routine reconstruct_matrix_from_id. Dies kann äquivalent geschrieben werden als

numpy.dot(A[:,idx[:k]],
                    numpy.hstack([numpy.eye(k), proj])
                  )[:,np.argsort(idx)]

in Bezug auf die Skelett- und Interpolationsmatrizen

B = A[:,idx[:k]]

und

P = numpy.hstack([numpy.eye(k), proj])[:,np.argsort(idx)]

respektive. Siehe auch reconstruct_interp_matrix und reconstruct_skel_matrix.

Die ID kann mit jeder relativen Genauigkeit oder jedem Rang berechnet werden (abhängig vom Wert von eps_or_k). Wenn eine Genauigkeit angegeben wird (eps_or_k < 1), dann hat diese Funktion die Ausgabesignatur

k, idx, proj = interp_decomp(A, eps_or_k)

Wenn stattdessen ein Rang angegeben wird (eps_or_k >= 1), dann ist die Ausgabesignatur

idx, proj = interp_decomp(A, eps_or_k)
Parameter:
Anumpy.ndarray oder scipy.sparse.linalg.LinearOperator mit rmatvec

Zu faktorisierende Matrix

eps_or_kfloat oder int

Relativer Fehler (wenn eps_or_k < 1) oder Rang (wenn eps_or_k >= 1) der Approximation.

randbool, optional

Ob Zufallsstichproben verwendet werden sollen, wenn A vom Typ numpy.ndarray ist (randomisierte Algorithmen werden immer verwendet, wenn A vom Typ scipy.sparse.linalg.LinearOperator ist).

rngnumpy.random.Generator, optional

Zustand des pseudozufälligen Zahlengenerators. Wenn rng None ist, wird ein neuer numpy.random.Generator unter Verwendung der Entropie des Betriebssystems erstellt. Typen außer numpy.random.Generator werden an numpy.random.default_rng übergeben, um einen Generator zu instanziieren. Wenn rand False ist, wird das Argument ignoriert.

Rückgabe:
kint

Rang, der erforderlich ist, um die angegebene relative Genauigkeit zu erreichen, wenn eps_or_k < 1.

idxnumpy.ndarray

Spaltenindex-Array.

projnumpy.ndarray

Interpolationskoeffizienten.