首頁  >  文章  >  後端開發  >  怎麼用Python求矩陣的範數和行列式

怎麼用Python求矩陣的範數和行列式

WBOY
WBOY轉載
2023-05-10 23:10:061311瀏覽

scipy.linalg的函數中,往往會提供兩種參數,其一是check_finite,當為True時將進行有限檢查,另一類是overwrite_xxxx,表示xxxx在計算過程中是否可以被覆寫。簡潔起見,後文說a提供覆寫開關,就表示存在一個參數overwrite_a,當其為True時,a允許計算過程中被覆寫;若說提供有限檢查開關,則代表提供check_finite參數。

範數

scipy.linalg中提供了函數norm用來求範數,其定義為

norm(a, ord=None, axis=None, keepdims=False, check_finite=True)

其中ord用來宣告範數的階 

None弗羅貝尼烏斯範數2-範數弗羅貝尼烏斯範數- #核範數-max ⁡ ( ∣ a ∣ ) min ⁡ ( ∣ a ∣ ) #0#sum(a!= 0)max(sum(abs(a), axis=0))min(sum(abs(a), axis=0))
ord 矩陣範數 向量範數



'fro'
'nuc'
inf #max(sum(abs(a), axis=1))
#-inf min(sum(abs(a), axis=1))
##-
1
-1
2 2-範數(最大奇異值)
-2 最小奇異值

# 若a為向量,若

ord

為非零整數,記作n nn,設a i a_iai為矩陣a aa中的元素,則矩陣的n nn範數為怎麼用Python求矩陣的範數和行列式

#數又稱「跡範數」 (trace norm),表示矩陣的所有奇異值總和。

Frobenius範數可定義為怎麼用Python求矩陣的範數和行列式

其實質是向量的2-範數在矩陣中的自然推廣。 除了scipy.linalg之外,numpy.linalg中也提供了

norm

,其參數為<pre class="brush:py;">norm(x, ord=None, axis=None, keepdims=False)</pre>其中order的可選參數與scipy.linalg中的

norm

函數相同。

行列式scipy.linalg中,行列式函數為det,其定義非常簡單,除了待求矩陣 a之外,就只有

a

的覆寫開關和有限檢查。

範例如下

import numpy as np
from scipy import linalg
a = np.array([[1,2,3], [4,5,6], [7,8,9]])
linalg.det(a)
# 0.0
a = np.array([[0,2,3], [4,5,6], [7,8,9]])
linalg.det(a)
# 3.0

scipy.linalg不提供trace函數,但

numpy

提供,其定義為

umpy.trace(a, offset=0, axis1=0, axis2=1, dtype=None, out=None)
    其中
  • offset
  • 為偏移量,表示相對於主對角線的偏移
  • axis1, axis2
  •  表示座標軸
  • dtype
  •  用於調整輸出值的資料類型
######
>>> x = np.random.rand(3,3)
>>> print(x)
[[0.26832187 0.64615363 0.09006217]
 [0.63106319 0.65573765 0.35842304]
 [0.66629322 0.16999836 0.92357658]]
>>> np.trace(x)
1.8476361016546932

以上是怎麼用Python求矩陣的範數和行列式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除