numerics 0.1.0
Loading...
Searching...
No Matches
expv.hpp
Go to the documentation of this file.
1/// @file expv.hpp
2/// @brief Krylov subspace matrix exponential-vector product: compute exp(t*A)*v
3///
4/// Uses the Arnoldi process to build a Krylov basis, then applies a dense
5/// Pade [6/6] matrix exponential on the projected (small) problem.
6#pragma once
7
8#include "core/types.hpp"
9#include "core/vector.hpp"
10#include "linalg/solvers/cg.hpp"
12#include <functional>
13
14namespace num {
15
16/// @brief Compute exp(t*A)*v via Krylov-Pade approximation (matrix-free)
17///
18/// @param t Scalar multiplier on A
19/// @param matvec Callable y = A*x
20/// @param n Dimension of the state space (size of v)
21/// @param v Input vector
22/// @param m_max Maximum Krylov dimension (default 30)
23/// @param tol Breakdown tolerance for Arnoldi (default 1e-8)
24/// @return Approximation of exp(t*A)*v
25Vector expv(real t, const MatVecFn &matvec, idx n, const Vector &v,
26 int m_max = 30, real tol = 1e-8);
27
28/// @brief Compute exp(t*A)*v via Krylov-Pade approximation (sparse matrix)
29///
30/// @param t Scalar multiplier on A
31/// @param A Sparse matrix in CSR format
32/// @param v Input vector
33/// @param m_max Maximum Krylov dimension (default 30)
34/// @param tol Breakdown tolerance for Arnoldi (default 1e-8)
35/// @return Approximation of exp(t*A)*v
36Vector expv(real t, const SparseMatrix &A, const Vector &v, int m_max = 30,
37 real tol = 1e-8);
38
39} // namespace num
Conjugate gradient solvers (dense and matrix-free)
Core type definitions.
double real
Definition types.hpp:10
std::function< void(const Vector &, Vector &)> MatVecFn
Callable type for matrix-free matvec: computes y = A*x.
Definition cg.hpp:13
std::size_t idx
Definition types.hpp:11
void matvec(const Matrix &A, const Vector &x, Vector &y, Backend b=default_backend)
y = A * x
Definition matrix.cpp:120
constexpr real e
Definition math.hpp:43
BasicVector< real > Vector
Real-valued dense vector with full backend dispatch (CPU + GPU)
Definition vector.hpp:130
Vector expv(real t, const MatVecFn &matvec, idx n, const Vector &v, int m_max=30, real tol=1e-8)
Compute exp(t*A)*v via Krylov-Pade approximation (matrix-free)
Definition expv.cpp:106
Compressed Sparse Row (CSR) matrix and operations.
Vector operations.