Python 类decimal.InvalidOperation错误

Python 类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]) 代码可以工作,但在矩阵

我将两个矩阵乘以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])
代码可以工作,但在矩阵值迭代几次后,我得到以下错误:

<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矩阵的结果乘法。