Python 按函数共同定义矩阵:TypeError
我能够使用函数定义Python 按函数共同定义矩阵:TypeError,python,typeerror,sympy,Python,Typeerror,Sympy,我能够使用函数定义sympy矩阵。对于一个特定的函数,我得到一个TypeError 共矩阵(4,4,λi,j:-1^(i-j)) 或 defc(i,j): 返回-1^(i-j) 共矩阵(4,4,c) 错误是: --------------------------------------------------------------------------- TypeError Traceback (most recent c
sympy
矩阵。对于一个特定的函数,我得到一个TypeError
共矩阵(4,4,λi,j:-1^(i-j))
或
defc(i,j):
返回-1^(i-j)
共矩阵(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'
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在里面
2返回-1^(i-j)
3#辛矩阵(4,4,c)
---->4辛矩阵(4,4,λi,j:-1^(i-j))
~/.local/lib/python3.8/site-packages/sympy/matrices/dense.py in uuuuu new_uuuu(cls,*args,**kwargs)
297
298定义新定义(cls、*ARG、**kwargs):
-->299返回cls.\u新(*args,**kwargs)
300
301@classmethod
~/.local/lib/python3.8/site-packages/sympy/matrix/dense.py in_new(cls,copy,*args,**kwargs)
308行,列,平面列表=args
309其他:
-->310行,列,平面列表=cls。\句柄\创建\输入(*args,**kwargs)
311平面列表=列表(平面列表)#创建一个浅层副本
312 self=object.\uuuuu new\uuuu(cls)
~/.local/lib/python3.8/site-packages/sympy/matrices/matrices.py在_handle\u creation\u输入中(cls、*args、**kwargs)
范围内的i为1100(行):
1101平面列表。扩展(
->1102[cls.\U sympify(op(cls.\U sympify(i),cls.\U sympify(j)))
1103适用于范围内的j(cols)])
1104
~/.local/lib/python3.8/site-packages/sympy/matrices/matrices.py in(.0)
范围内的i为1100(行):
1101平面列表。扩展(
->1102[cls.\U sympify(op(cls.\U sympify(i),cls.\U sympify(j)))
1103适用于范围内的j(cols)])
1104
in(i,j)
2返回-1^(i-j)
3#辛矩阵(4,4,c)
---->4辛矩阵(4,4,λi,j:-1^(i-j))
TypeError:不支持^:'int'和'Zero'的操作数类型
从错误日志来看,i-j
的计算结果似乎是int
和Zero
(可能是在i==j
时)
如何校正函数以确保始终将
I-j
计算为int
?使用int
强制执行I-j
的结果可以解决以下问题:
共矩阵(4,4,λi,j:-1^int(i-j))
或
defc(i,j):
返回-1^int(i-j)
共矩阵(4,4,c)
结果是: