C++ 本征c++;:复矩阵的面积双曲正切(atanh)

C++ 本征c++;:复矩阵的面积双曲正切(atanh),c++,eigen,C++,Eigen,我试图计算我的特征复矩阵的面积双曲正切(atanh)。 我在“特征库”中没有找到一个函数来计算atanh,我能用这个表达式来表示我的矩阵吗 atanh(x)=1/2(ln(1+x)-ln(1-x)) 谢谢:)首先,您需要区分矩阵的atanh和其条目的atanh。如果它只是其条目的atanh,那么您可以按照@Ptaq666的建议进行操作。如果它是矩阵的atanh,则通过执行本征分解以找到E(本征向量矩阵)和l(本征值)来定义。然后将矩阵的弧长定义为E*diag(atanh(l))*E^-1 这就是

我试图计算我的特征复矩阵的面积双曲正切(atanh)。 我在“特征库”中没有找到一个函数来计算atanh,我能用这个表达式来表示我的矩阵吗

atanh(x)=1/2(ln(1+x)-ln(1-x))


谢谢:)

首先,您需要区分矩阵的atanh和其条目的atanh。如果它只是其条目的
atanh
,那么您可以按照@Ptaq666的建议进行操作。如果它是矩阵的
atanh
,则通过执行本征分解以找到
E
(本征向量矩阵)和
l
(本征值)来定义。然后将矩阵的弧长定义为
E*diag(atanh(l))*E^-1

这就是
Eigen::MatrixBase::log
Eigen::MatrixBase::sin
等所做的,因此您应该检查它们的实现


(等价地,你可以用表达式中的单位矩阵替换
1

Mmm不,更好地使用我的矩阵已经是对角的,我认为矩阵的atanh等于其条目的atanh,不是吗?如果它是对角矩阵,那么是的,你可以像@Ptaq666`那样在对角线元素上使用
std::atanh
。系数式atanh在Eigen的头部很容易找到:
mat.array().atanh()
atanh(mat.array())
。Eigen库不包含弧双曲线函数:@ggael,我试过你的表达式,但我有一个错误:“类Eigen::ArrayWrapper”没有名为“atanh”的成员|