轉自:https://blog.csdn.net/qq_30138291/article/details/76327051
老師課堂總結,請勿轉載
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.]]
