![]() |
Stan Math Library
5.1.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 |