时间可逆(time-reversible)替换模型的转移概率矩阵计算:P(t) = e^{Qt}。
ReversibleMatrixExponential
00 Remarks
基础数学库中没有矩阵指数实现,这里利用时间可逆模型的对称性把 Q 对称化之后再做一次特征分解:
令 D = diag(π),B = D^{1/2} Q D^{-1/2} 为对称矩阵(因为 Q_ij = S_ij π_j 且 交换率矩阵 S 对称),于是:
Q = D^{-1/2} B D^{1/2},B = U Λ Uᵀ,P(t) = e^{Qt} = D^{-1/2} U diag(e^{λt}) Uᵀ D^{1/2}
这样每个替换模型只需要做一次特征分解,之后各分支可以按分支长度 t 快速求出 P(t)。 特征分解复用基础库 MatrixOps.JacobiEigen()(Jacobi 旋转法,专门针对对称矩阵)。
01 Syntax
SMRUCC.genomics.Interops.Visualize.Phylip.Evolution.MaximumLikelihood.ReversibleMatrixExponential
02 Methods
03 Properties
| Name | Overloads | Summary |
|---|---|---|
| Eigenvalues | 1 | 特征值(应为非正值,其中一个为 0) |
| Dimension | 1 |
04 Members
#ctor(
Double()(), Double())由对称交换率矩阵(对角线为零)与平衡频率构建。
Parameters
| Name | Type | Description |
|---|---|---|
exchangeability | Double()() | 对称的交换率矩阵 S(对角为 0) |
pi | Double() | 平衡频率向量(和为 1,全部为正) |
Evaluate(
Double)计算转移概率矩阵 P(t)。
Eigenvalues
特征值(应为非正值,其中一个为 0)
Dimension