sympy 符号矩阵平方根

sympy symbolic matrix square root

是否可以使用 sympy sqrtm 函数来计算符号矩阵的平方根?例如,如果我的矩阵 [[1, a], [a, 1]] 的 a > 0,我可以使用 sympy 来计算平方根吗?

from sympy import *
a=symbols('a')
m=Matrix( [[1, a], [a, 1]])
m**(1/2)

给予

Matrix([
[ (-a + 1)**0.5/2 + (a + 1)**0.5/2, -(-a + 1)**0.5/2 + (a + 1)**0.5/2],
[-(-a + 1)**0.5/2 + (a + 1)**0.5/2,  (-a + 1)**0.5/2 + (a + 1)**0.5/2]])

要比较结果,在 Mathematica 中

感谢您报告此事,感谢您的耐心等待。我们添加了一个新的 mat_pow() 函数,在 Github 版本 (v1.1.1.9002) 中可用。下面我演示一下这个版本之前的解决方案以及新功能:

library(caracas)

M <- matrix_(c("1", "a", "a", 1), 2, 2)
M
#> [caracas]: ⎡1  a⎤
#>            ⎢    ⎥
#>            ⎣a  1⎦

# Before v1.1.1.9002
eval_to_symbol(paste0(as.character(M), "**(1/2)"))
#> [caracas]: ⎡   _______     _______       _______     _______⎤
#>            ⎢ ╲╱ 1 - a    ╲╱ a + 1      ╲╱ 1 - a    ╲╱ a + 1 ⎥
#>            ⎢ ───────── + ─────────   - ───────── + ─────────⎥
#>            ⎢     2           2             2           2    ⎥
#>            ⎢                                                ⎥
#>            ⎢    _______     _______     _______     _______ ⎥
#>            ⎢  ╲╱ 1 - a    ╲╱ a + 1    ╲╱ 1 - a    ╲╱ a + 1  ⎥
#>            ⎢- ───────── + ─────────   ───────── + ───────── ⎥
#>            ⎣      2           2           2           2     ⎦

# From v1.1.1.9002:
mat_pow(M, 1/2)
#> [caracas]: ⎡   _______     _______       _______     _______⎤
#>            ⎢ ╲╱ 1 - a    ╲╱ a + 1      ╲╱ 1 - a    ╲╱ a + 1 ⎥
#>            ⎢ ───────── + ─────────   - ───────── + ─────────⎥
#>            ⎢     2           2             2           2    ⎥
#>            ⎢                                                ⎥
#>            ⎢    _______     _______     _______     _______ ⎥
#>            ⎢  ╲╱ 1 - a    ╲╱ a + 1    ╲╱ 1 - a    ╲╱ a + 1  ⎥
#>            ⎢- ───────── + ─────────   ───────── + ───────── ⎥
#>            ⎣      2           2           2           2     ⎦