[英]Sympy defining matrix by function: TypeError
我能够使用函数定义sympy
矩阵。 对于特定的 function,我得到一个TypeError
。
sympy.Matrix(4, 4, lambda i,j: -1^(i-j) )
或者
def c(i,j):
return -1^(i-j)
sympy.Matrix(4, 4, c)
错误是:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-28-f922eb663788> in <module>
2 return -1^(i-j)
3 # sympy.Matrix(4, 4, c)
----> 4 sympy.Matrix(4, 4, lambda i,j: -1^(i-j) )
~/.local/lib/python3.8/site-packages/sympy/matrices/dense.py in __new__(cls, *args, **kwargs)
297
298 def __new__(cls, *args, **kwargs):
--> 299 return cls._new(*args, **kwargs)
300
301 @classmethod
~/.local/lib/python3.8/site-packages/sympy/matrices/dense.py in _new(cls, copy, *args, **kwargs)
308 rows, cols, flat_list = args
309 else:
--> 310 rows, cols, flat_list = cls._handle_creation_inputs(*args, **kwargs)
311 flat_list = list(flat_list) # create a shallow copy
312 self = object.__new__(cls)
~/.local/lib/python3.8/site-packages/sympy/matrices/matrices.py in _handle_creation_inputs(cls, *args, **kwargs)
1100 for i in range(rows):
1101 flat_list.extend(
-> 1102 [cls._sympify(op(cls._sympify(i), cls._sympify(j)))
1103 for j in range(cols)])
1104
~/.local/lib/python3.8/site-packages/sympy/matrices/matrices.py in <listcomp>(.0)
1100 for i in range(rows):
1101 flat_list.extend(
-> 1102 [cls._sympify(op(cls._sympify(i), cls._sympify(j)))
1103 for j in range(cols)])
1104
<ipython-input-28-f922eb663788> in <lambda>(i, j)
2 return -1^(i-j)
3 # sympy.Matrix(4, 4, c)
----> 4 sympy.Matrix(4, 4, lambda i,j: -1^(i-j) )
TypeError: unsupported operand type(s) for ^: 'int' and 'Zero'
从错误日志中,似乎ij
被评估为int
和Zero
(可能在i == j
时)。
如何正确 function 以确保ij
始终评估为int
?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.