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

WBOY
發布: 2023-05-10 23:10:06
轉載
1241 人瀏覽過

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))
#-infmin(sum(abs(a), axis=1))
##-
1
-1
22-範數(最大奇異值)
-2最小奇異值

# 若a為向量,若

ord

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

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

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

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

norm

,其參數為<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:py;">norm(x, ord=None, axis=None, keepdims=False)</pre><div class="contentsignin">登入後複製</div></div>其中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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!