带有犰狳库的复矩阵指数

问题描述

我正在使用 Armadillo 用 C++ 进行一些物理模拟。我需要计算一个看起来像的产品:

Q = R * exp(neg_i*Lambda*t) * R.t() * Q

其中 Q,R 是相同大小的 cx_mat 类,Lambda 是与 Q,R 相同大小的 mat 类,并且是对角线,neg_i 是 -i 复数,t 是双精度数。我应该得到一个酉矩阵作为解决方案,但我得到的是非酉矩阵。我想知道指数函数是否适用于复杂矩阵?或者如果不是我应该用什么替换它?

解决方法

您需要对矩阵指数使用 expmat() 函数,exp() 计算元素指数。

例如,我目前用于物理模拟的一些代码:

arma::cx_mat f;  // A hermitian matrix
double delta_t ;  // A time step
std::complex<double> i_imag(0.0,1.0) ;  // i,the imaginary number

std::vector<arma::cx_mat> U; // A vector of complex unitary matrices.

U.push_back(arma::expmat(-i_imag * delta_t * f));

已经测试了这段代码,取反厄米矩阵的矩阵指数来得到酉变换并且工作正常。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...