Numpy入門學習之(二)linalg庫----向量範數、矩陣範數、行列式、矩陣逆、冪
阿新 • • 發佈:2018-12-25
老師課堂總結,請勿轉載
Numpy中的核心線性代數工具
numpy.linalg模組包含線性代數的函式。使用這個模組,我們可以計算逆矩陣、求特徵值、解線性方程組以及求解行列式等。
求解矩陣的範數
在實數域中,數的大小和兩個數之間的距離是通過絕對值來度量 的。在解析幾何中,向量的大小和兩個向量之差的大小是 “長度 ” 和 “ 距 離 ”的概念來度量的。為了對矩陣運算進行數值分析,我們需要對向量 和矩陣的 “大小 ”引進某種度量。範數是絕對值概念的自然推廣。
"範數 "是對向量和矩陣的一種度量,實際上是二維和三維 向量長度概念的一種推廣.
向量範數
範數理論的一個小推論告訴我們:ℓ1≥ℓ2≥ℓ∞
矩陣的範數
範數彙總
轉載地址http://blog.csdn.net/u011361880/article/details/73527229
矩陣行列式
方陣的逆矩陣
伴隨矩陣
逆矩陣運算性質
程式碼
# -*- coding: utf-8 -*- """ Created on Sat Jul 29 15:33:39 2017 @author: Administrator """ import numpy as np print("###########向量範數#########") print("向量為:",[1,5,6,3,-1]) print("1範數:",np.linalg.norm([1,5,6,3,-1],ord = 1),"向量元素絕對值之和") print("2範數:",np.linalg.norm([1,5,6,3,-1],ord = 2),"向量元素絕對值的平方和再開方") print("無窮範數:",np.linalg.norm([1,5,6,3,-1],ord = np.inf),"所有向量元素絕對值中的最大值") print("###########矩陣範數#########") a = np.arange(12).reshape(3,4) print("矩陣a為:") print(a) print("F範數",np.linalg.norm(a,ord = 'fro'),"矩陣元素絕對值的平方和再開平方") print("1範數",np.linalg.norm(a,ord = 1),"列和範數,即所有矩陣列向量絕對值之和的最大值") print("2範數",np.linalg.norm(a,ord = 2),"譜範數,即ATA矩陣的最大特徵值的開平方") print("無窮範數",np.linalg.norm(a,ord = np.inf),"行和範數,即所有矩陣行向量絕對值之和的最大值") print("###########行列式#########") a = np.arange(1,17).reshape(4,-1) print("矩陣a為") print(a) print("a的行列式為:",np.linalg.det(a)) print("###########逆矩陣np.linalg.inv()#########") a = np.array([[1,-1],[1,1]]) b = np.array([[1/2,1/2],[-1/2,1/2]]) print("矩陣相乘為單位矩陣E:") print(np.dot(a,b)) print("###########伴隨矩陣#########") print(a) det_a = np.linalg.det(a) print("a的行列式為:",det_a) inv_a = np.linalg.inv(a)####求a的逆矩陣 print("a的逆矩陣為:",inv_a) print("a的伴隨矩陣為:") bansui = det_a*inv_a print(bansui) print("驗證:",np.dot(bansui,a)) print("###########A與A逆行列式#########") a = np.random.rand(5,5) inv_a = np.linalg.inv(a) det_a = np.linalg.det(a) det_inv_a = np.linalg.det(inv_a) print(det_a*det_inv_a) print("###########矩陣的冪matrix_power()#########") a = np.random.rand(3,3) print(a) print(np.linalg.matrix_power(a,2)) print("###########求解AXB=C?#########") a = np.array([[1,2,3],[2,2,1],[3,4,3]]) b = np.array([[2,1],[5,3]]) c = np.array([[1,3],[2,0],[3,1]]) det_a = np.linalg.det(a) det_b = np.linalg.det(b) inv_a = np.linalg.inv(a) inv_b = np.linalg.inv(b) if det_a != 0: if det_b !=0: x = np.dot(np.dot(inv_a,c),inv_b) print(x)
###########向量範數######### 向量為: [1, 5, 6, 3, -1] 1範數: 16.0 向量元素絕對值之和 2範數: 8.48528137424 向量元素絕對值的平方和再開方 無窮範數: 6.0 所有向量元素絕對值中的最大值 ###########矩陣範數######### 矩陣a為: [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] F範數 22.4944437584 矩陣元素絕對值的平方和再開平方 1範數 21.0 列和範數,即所有矩陣列向量絕對值之和的最大值 2範數 22.4092981633 譜範數,即ATA矩陣的最大特徵值的開平方 無窮範數 38.0 行和範數,即所有矩陣行向量絕對值之和的最大值 ###########行列式######### 矩陣a為 [[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12] [13 14 15 16]] a的行列式為: 4.73316543133e-30 ###########逆矩陣np.linalg.inv()######### 矩陣相乘為單位矩陣E: [[ 1. 0.] [ 0. 1.]] ###########伴隨矩陣######### [[ 1 -1] [ 1 1]] a的行列式為: 2.0 a的逆矩陣為: [[ 0.5 0.5] [-0.5 0.5]] a的伴隨矩陣為: [[ 1. 1.] [-1. 1.]] 驗證: [[ 2. 0.] [ 0. 2.]] ###########A與A逆行列式######### 1.0 ###########矩陣的冪matrix_power()######### [[ 0.66673632 0.24542188 0.24331174] [ 0.81223569 0.41511886 0.20157493] [ 0.07107783 0.64497704 0.29675985]] [[ 0.66117181 0.42244142 0.28390083] [ 0.89304891 0.50167529 0.34112338] [ 0.59235659 0.47658948 0.23537168]] ###########求解AXB=C?######### [[ -2. 1.] [ 10. -4.] [-10. 4.]]