繁体   English   中英

SymPy中眼睛与身份的区别

[英]Difference between eye and Identity in SymPy

在SymPy中, eye(5)Identity(5)之间有什么区别?

如果我有矩阵X ,我会看到X + eye(5)X + Identity(5)给出不同的结果(后者不是矩阵)。

Identity更多的是能够使用符号I来代表身份。 如果你想使用矩阵,你必须做Matrix(Identity)

看到:

from random import randint
from sympy import *

X = Matrix(list([randint(1, 10) for _ in range(5)] for _ in range(5)))

print(X + eye(5))

输出:矩阵([[7,10,5,5,4],[3,7,9,5,4],[1,9,6,3,4],[4,8,5,2, 9],[9,3,6,6,4]])

print(X + Matrix(Identity(5)))

相同的输出:矩阵([[7,10,5,5,4],[3,7,9,5,4],[1,9,6,3,4],[4,8,5,2] ,9],[9,3,6,6,4]])

print(X + Identity(5))

'''different output more about the symbol: I + Matrix([
[6, 10, 5, 5, 4],
[3,  6, 9, 5, 4],
[1,  9, 5, 3, 4],
[4,  8, 5, 1, 9],
[9,  3, 6, 6, 3]])'''

文档中没有太多关于它的说法。

SymPy区分

  • 显式矩阵 ,具有一定的大小,如3乘3,以及显式(可能是符号)条目;
  • 矩阵表达式 ,可能具有符号大小,如n乘n。

eye创建一个矩阵, Identity创建一个矩阵表达式。 例如:

n = Symbol("n")
A = Identity(n)  # works
A = eye(n)       # throws an error

可以使用此对象进行一些计算,例如

t = trace(A)     # n
B = BlockMatrix([[A, -A], [-A, A]])

如果可能,可以使用as_explicit方法将矩阵表达式转换为显式矩阵:

A = Identity(3)
print(A.as_explicit())

版画

Matrix([
[1, 0, 0],
[0, 1, 0],
[0, 0, 1]])

可以使用Matrix(A)来达到相同的效果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM