我試圖採用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