egttools.numerical.linear_operator

Matrix-free linear operator wrappers and stationary-distribution solvers.

Provides: - Factory functions that wrap a PairwiseComparisonTransitionOperator as

scipy LinearOperator objects for iterative eigensolvers and Krylov solvers.

  • stationary_distribution_from_sparse: convenience solver for an explicit sparse transition matrix (e.g. from PairwiseComparison.calculate_transition_matrix).

Example usage

>>> import numpy as np
>>> from egttools.games import NormalFormGame
>>> from egttools.numerical import PairwiseComparisonTransitionOperator
>>> from egttools.numerical.numerical_ import PairwiseComparison
>>> from egttools.numerical.linear_operator import (
...     make_transition_operator, make_residual_operator,
...     stationary_distribution_from_sparse)
>>>
>>> # Matrix-free path (no Python callbacks)
>>> game = NormalFormGame(...)
>>> op = PairwiseComparisonTransitionOperator(
...         population_size=50, game=game, beta=1.0, mu=0.01)
>>> pi = op.compute_stationary_distribution()          # power iteration
>>> pi = op.compute_stationary_arpack()                # ARPACK (if compiled)
>>>
>>> # Explicit-sparse path (best for moderate state spaces)
>>> pc = PairwiseComparison(50, game)
>>> P  = pc.calculate_transition_matrix(beta=1.0, mu=0.01)
>>> pi = stationary_distribution_from_sparse(P)

Functions

eigs

Find k eigenvalues and eigenvectors of the square matrix A.

make_residual_operator

Wrap a PairwiseComparisonTransitionOperator as a scipy LinearOperator for (I - P^T).

make_transition_operator

Wrap a PairwiseComparisonTransitionOperator as a scipy LinearOperator for P^T.

stationary_distribution_from_sparse

Compute the stationary distribution of an explicit sparse transition matrix.

Classes

LinearOperator

Common interface for performing matrix vector products