scipy.linalg.

invhilbert#

scipy.linalg.invhilbert(n, exact=False)[source]#

計算階數為 n 的 Hilbert 矩陣的反矩陣。

Hilbert 矩陣反矩陣中的元素為整數。當 n 大於 14 時,反矩陣中的某些元素會超出 64 位元整數的上限。exact 參數提供了兩種處理這些大整數的選項。

參數:
nint

Hilbert 矩陣的階數。

exactbool, optional

如果為 False,則返回的陣列資料類型為 np.float64,且該陣列是反矩陣的近似值。如果為 True,則該陣列是精確的整數反矩陣陣列。為了表示當 n > 14 時的精確反矩陣,返回的陣列是長整數的物件陣列。對於 n <= 14,精確反矩陣將作為資料類型為 np.int64 的陣列返回。

返回:
invh(n, n) ndarray

如果 exact 為 False,則陣列的資料類型為 np.float64。如果 exact 為 True,則資料類型為 np.int64 (對於 n <= 14) 或 object (對於 n > 14)。在後一種情況下,陣列中的物件將為長整數。

另請參閱

hilbert

建立 Hilbert 矩陣。

註解

在版本 0.10.0 中新增。

範例

>>> from scipy.linalg import invhilbert
>>> invhilbert(4)
array([[   16.,  -120.,   240.,  -140.],
       [ -120.,  1200., -2700.,  1680.],
       [  240., -2700.,  6480., -4200.],
       [ -140.,  1680., -4200.,  2800.]])
>>> invhilbert(4, exact=True)
array([[   16,  -120,   240,  -140],
       [ -120,  1200, -2700,  1680],
       [  240, -2700,  6480, -4200],
       [ -140,  1680, -4200,  2800]], dtype=int64)
>>> invhilbert(16)[7,7]
4.2475099528537506e+19
>>> invhilbert(16, exact=True)[7,7]
42475099528537378560