![]() |
Stan Math Library
5.3.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 26 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 (EigMat1 &&mat, EigMat2 &&b, const double t=1.0) |
| Perform the matrix exponential action exp(A*t)*B. | |
| template<typename EigenMat > | |
| double | matrix_operator_inf_norm (EigenMat &&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 (EigMat1 &&mat, const 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 (EigMat1 &&mat, 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. | |
Static Private Attributes | |
| static constexpr int | _p_max = 8 |
| static constexpr int | _m_max = 55 |
| static constexpr double | _tol = 1.1e-16 |
| static constexpr std::array< double, 100 > | _theta_m |