Python 类decimal.InvalidOperation错误
我将两个矩阵乘以3x3和1x3Python 类decimal.InvalidOperation错误,python,matrix,decimal,multiplication,Python,Matrix,Decimal,Multiplication,我将两个矩阵乘以3x3和1x3 import decimal dec = decimal.Decimal dot = [0.0,0.0,0.0] J = [1.0,2.0,3.0],[1.0,2.0,3.0],[1.0,2.0,3.0] F = [0.0,1.0,2.0] for i in range(3): dot[i] = dec(J[i][0])*dec(F[0])+dec(J[i][1])*dec(F[1])+dec(J[i][2])*dec(F[2]) 代码可以工作,但在矩阵
import decimal
dec = decimal.Decimal
dot = [0.0,0.0,0.0]
J = [1.0,2.0,3.0],[1.0,2.0,3.0],[1.0,2.0,3.0]
F = [0.0,1.0,2.0]
for i in range(3):
dot[i] = dec(J[i][0])*dec(F[0])+dec(J[i][1])*dec(F[1])+dec(J[i][2])*dec(F[2])
代码可以工作,但在矩阵值迭代几次后,我得到以下错误:
<ipython-input-2-58067b4f3a4e> in DotProduct(J, F)
9 def DotProduct(J,F):
10 for i in range(3):
---> 11 dot[i] = dec(J[i][0]) * dec(F[0]) + dec(J[i][1])
* dec(F[1]) + dec(J[i][2]) * dec(F[2])
12 return dot
13
InvalidOperation: [<class 'decimal.InvalidOperation'>]
F(1x3)矩阵(原件)
J*F的点(1x3)矩阵结果
[Decimal('0.00024067027981818560724074545'),
Decimal('0.00155160691687072804459308826'),
Decimal('0.01068814288621735926754972657')]
经过多次迭代后:
J矩阵变为
([Decimal('-2.017921396484441390463202074E-285'),
Decimal('1.544790144766561273091342077E-337'),
Decimal('-0')],
[Decimal('-0.03736963129288584732273158647'),
Decimal('0.03736963129288584732273158647'),
Decimal('0')],
[Decimal('0'),
Decimal('-0'),
Decimal('0.001941217285022090055061872254')])
[ -3.02323763e+229 -3.80160157e+281 -1.44050757e+308]
[Decimal('2.27979261759690205166387891E-57'),
Decimal('-1.420644490442869792721270372E+280'),
Decimal('-2.796338188825434810994646950E+305')]
F矩阵变为
([Decimal('-2.017921396484441390463202074E-285'),
Decimal('1.544790144766561273091342077E-337'),
Decimal('-0')],
[Decimal('-0.03736963129288584732273158647'),
Decimal('0.03736963129288584732273158647'),
Decimal('0')],
[Decimal('0'),
Decimal('-0'),
Decimal('0.001941217285022090055061872254')])
[ -3.02323763e+229 -3.80160157e+281 -1.44050757e+308]
[Decimal('2.27979261759690205166387891E-57'),
Decimal('-1.420644490442869792721270372E+280'),
Decimal('-2.796338188825434810994646950E+305')]
点阵变为
([Decimal('-2.017921396484441390463202074E-285'),
Decimal('1.544790144766561273091342077E-337'),
Decimal('-0')],
[Decimal('-0.03736963129288584732273158647'),
Decimal('0.03736963129288584732273158647'),
Decimal('0')],
[Decimal('0'),
Decimal('-0'),
Decimal('0.001941217285022090055061872254')])
[ -3.02323763e+229 -3.80160157e+281 -1.44050757e+308]
[Decimal('2.27979261759690205166387891E-57'),
Decimal('-1.420644490442869792721270372E+280'),
Decimal('-2.796338188825434810994646950E+305')]
什么是[code>dec?@juanpa.arrivillaga dec=decimal.decimal你应该在问题本身中说明清楚。你应该努力发布人们不需要修改就可以运行的代码。什么是
dot
?@alfasin dot是1x3矩阵的数组,它保存3x3和1x3矩阵的结果乘法。