Stan Math Library
4.9.0
Automatic Differentiation
|
The implementation of the work by Awad H.
Al-Mohy and Nicholas J. Higham "Computing the Action of the Matrix Exponential, with an Application to Exponential Integrators" Read More: https://epubs.siam.org/doi/abs/10.1137/100788860 See also: https://www.mathworks.com/matlabcentral/fileexchange/29576-matrix-exponential-times-a-vector
Calculates exp(mat*t)*b, where mat & b are matrices, and t is double.
Definition at line 25 of file matrix_exp_action_handler.hpp.
#include <matrix_exp_action_handler.hpp>
Public Member Functions | |
template<typename EigMat1 , typename EigMat2 , require_all_eigen_t< EigMat1, EigMat2 > * = nullptr, require_all_st_same< double, EigMat1, EigMat2 > * = nullptr> | |
Eigen::MatrixXd | action (const EigMat1 &mat, const EigMat2 &b, const double &t=1.0) |
Perform the matrix exponential action exp(A*t)*B. | |
double | matrix_operator_inf_norm (Eigen::MatrixXd const &x) |
Eigen expression for matrix operator infinity norm. | |
template<typename EigMat1 , require_all_eigen_t< EigMat1 > * = nullptr, require_all_st_same< double, EigMat1 > * = nullptr> | |
double | mat_power_1_norm (const EigMat1 &mat, int m) |
Estimate the 1-norm of mat^m. | |
template<typename EigMat1 , typename EigMat2 , require_all_eigen_t< EigMat1, EigMat2 > * = nullptr, require_all_st_same< double, EigMat1, EigMat2 > * = nullptr> | |
void | set_approx_order (const EigMat1 &mat, const EigMat2 &b, const double &t, int &m, int &s) |
Approximation is based on parameter "m" and "s", proposed in CODE FRAGMENT 3.1 of the reference. | |
Private Attributes | |
const int | _p_max = 8 |
const int | _m_max = 55 |
const double | _tol = 1.1e-16 |
const std::vector< double > | _theta_m |