您好,登錄后才能下訂單哦!
本篇內容介紹了“如何用Python求矩陣的范數和行列式”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
在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
用于聲明范數的階
ord | 矩陣范數 | 向量范數 |
---|---|---|
None | 弗羅貝尼烏斯范數 | 2-范數 |
'fro' | 弗羅貝尼烏斯范數 | - |
'nuc' | 核范數 | - |
inf | max(sum(abs(a), axis=1)) | max ? ( ∣ a ∣ ) |
-inf | min(sum(abs(a), axis=1)) | min ? ( ∣ a ∣ ) |
0 | - | sum(a!=0) |
1 | max(sum(abs(a), axis=0)) | |
-1 | min(sum(abs(a), axis=0)) | |
2 | 2-范數(最大奇異值) | |
-2 | 最小奇異值 |
若a
為向量,若ord
為非零整數,記作n nn,設a i a_iai為矩陣a aa中的元素,則矩陣的n nn范數為
核范數又稱“跡范數” (trace norm),表示矩陣的所有奇異值之和。
Frobenius范數可定義為
其實質是向量的2-范數在矩陣中的自然推廣。
除了scipy.linalg
之外,numpy.linalg
中也提供了norm
,其參數為
norm(x, ord=None, axis=None, keepdims=False)
其中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求矩陣的范數和行列式”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。