首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何对矩阵sqrtm进行渐近取整?

如何对矩阵sqrtm进行渐近取整?
EN

Stack Overflow用户
提问于 2018-12-25 22:42:10
回答 1查看 267关注 0票数 3

How to round Matrix elements in sympy?

代码语言:javascript
运行
复制
from sympy import *
from mpmath import *
A=Matrix([[5,4,1],
          [4,6,4],
          [1,4,5]])
print(A)
print(type(A.evalf(3)))
B=sqrtm(A)
print(B)
print(type(B))
print(B.evalf(3))

代码语言:javascript
运行
复制
Matrix([[5, 4, 1], [4, 6, 4], [1, 4, 5]])

<class 'sympy.matrices.dense.MutableDenseMatrix'>

Traceback (most recent call last):

  File "C:/Users/xxx/.PyCharmCE2018.2/config/scratches/scratch_9.py", line 11, in <module>
    print(B.evalf(3))

AttributeError: 'matrix' object has no attribute 'evalf'

[                 2.0  1.0  3.33606965638267e-20]

[                 1.0  2.0                   1.0]

[3.34095591577049e-20  1.0                   2.0]

<class 'mpmath.matrices.matrices.matrix'>

I

代码语言:javascript
运行
复制
[2.000  1.000  0.000]

[1.000  2.000  1.000]

[0.000  1.000  2.000]

提前感谢您,并为我糟糕的英语表示抱歉!

EN

Stack Overflow用户

回答已采纳

发布于 2018-12-28 13:00:39

调用sqrtm后,矩阵类型发生变化,不能使用evalf

答:<class 'sympy.matrices.dense.MutableDenseMatrix'>

B:<class 'mpmath.matrices.matrices.matrix'>

使用函数chop以漂亮的格式打印矩阵B

代码语言:javascript
运行
复制
from sympy import *
from mpmath import *
A=Matrix([[5,4,1],
          [4,6,4],
          [1,4,5]])
print(A)
B=sqrtm(A)
print(chop(B))

输出:

代码语言:javascript
运行
复制
[2.0  1.0  0.0]
[1.0  2.0  1.0]
[0.0  1.0  2.0]

此外,您还可以使用nprint/nstr

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53923323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档