我试图采用365x365矩阵的逆。其中一些数值大到365 ** 365,因此它们被转换为长数字。我不知道linalg.matrix_power()
函数是否可以处理长数字。我知道问题来自于此(因为错误消息,并且因为我的程序对于较小的矩阵工作得很好),但我不确定是否有解决方法。代码需要为NxN矩阵工作。逆矩阵(Numpy)int太大,无法转换为浮点数
这里是我的代码:
item=0
for i in xlist:
xtotal.append(arrayit.arrayit(xlist[item],len(xlist)))
item=item+1
print xtotal
xinverted=numpy.linalg.matrix_power(xtotal,-1)
coeff=numpy.dot(xinverted,ylist)
arrayit.arrayit
:
def arrayit(number, length):
newarray=[]
import decimal
i=0
while i!=(length):
newarray.insert(0,decimal.Decimal(number**i))
i=i+1
return newarray;
该方案是X,Y从列表(x和y会的名单列表)坐标,使功能。 谢谢!
你可以使用'Decimal(365 ** 365)' –
你能描述一下你的用例吗?这些是惊人的巨大数字。 – user2357112
我相当有信心,'numpy.linalg.matrix_power'(但是考虑使用'numpy.linalg.inv'代替!)只适用于可以适合'double'或'long double'的数字。我不认为它专用于像'decimal.Decimal'这样的一般对象。如果你可以通过一个常量来缩放你的整个矩阵,所以它是合理的,你应该有更多的运气(它看起来不像你的情况,尽管...)。 – DavidW