pymor.algorithms.krylov

Module for computing (rational) Krylov subspaces’ bases.

Module Contents

Functions

rational_arnoldi

Rational Arnoldi algorithm.

tangential_rational_krylov

Tangential Rational Krylov subspace.

pymor.algorithms.krylov.rational_arnoldi(A, E, b, sigma, trans=False)[source]

Rational Arnoldi algorithm.

If trans == False, using Arnoldi process, computes a real orthonormal basis for the rational Krylov subspace

span{(σ1EA)1b,(σ2EA)1b,,(σrEA)1b},

otherwise, computes the same for

span{(σ1EA)TbT,(σ2EA)TbT,,(σrEA)TbT}.

Interpolation points in sigma are allowed to repeat (in any order). Then, in the above expression,

(σiEA)1b,,(σiEA)1bm times

is replaced by

(σiEA)1b,(σiEA)1E(σiEA)1b,,((σiEA)1E)m1(σiEA)1b.

Analogously for the trans == True case.

Parameters

A

Real Operator A.

E

Real Operator E.

b

Real vector-like operator (if trans is False) or functional (if trans is True).

sigma

Sequence of interpolation points (closed under conjugation).

trans

Boolean, see above.

Returns

V

Orthonormal basis for the Krylov subspace VectorArray.

pymor.algorithms.krylov.tangential_rational_krylov(A, E, B, b, sigma, trans=False, orth=True)[source]

Tangential Rational Krylov subspace.

If trans == False, computes a real basis for the rational Krylov subspace

span{(σ1EA)1Bb1,(σ2EA)1Bb2,,(σrEA)1Bbr},

otherwise, computes the same for

span{(σ1EA)TBTb1,(σ2EA)TBTb2,,(σrEA)TBTbr}.

Interpolation points in sigma are assumed to be pairwise distinct.

Parameters

A

Real Operator A.

E

Real Operator E.

B

Real Operator B.

b
VectorArray from B.source, if trans == False, or

B.range, if trans == True.

sigma

Sequence of interpolation points (closed under conjugation), of the same length as b.

trans

Boolean, see above.

orth

If True, orthonormalizes the basis using pymor.algorithms.gram_schmidt.gram_schmidt.

Returns

V

Optionally orthonormal basis for the Krylov subspace VectorArray.