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 ⎦
是否可以使用 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 ⎦