English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Álgebra Linear do NumPy

    NumPy 线性代数的实例

函数描述
dot两个数组的点积,即元素对应相乘。
vdot两个向量的点积
inner两个数组的内积
matmul两个数组的矩阵积
determinant数组的行列式
solve求解线性矩阵方程
inv计算矩阵的乘法逆矩阵

numpy.dot()

numpy.dot() 对于两个一维的数组,计算的是这两个数组对应下标元素的乘积和(数学上称之为内积);对于二维数组,计算的是两个数组的矩阵乘积;对于多维数组,它的通用计算公式如下,即结果数组中的每个元素都是:数组a的最后一维上的所有元素与数组b的倒数第二位上的所有元素的乘积和: dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])

   numpy.dot(a, b, out=None)

参数说明:

a : ndarray 数组 b : ndarray 数组 out : ndarray, 可选,用来保存dot()的计算结果

 import numpy.matlib
 Exemplo
 import numpy as np1],[0,2b = np.array([[3],[0,4],[
 print('Matriz b: ')11],[0,12b = np.array([[13],[0,14],[
 print(np.dot(a,b))

A solução é:

 [[37 40] 
 [85 92]]

计算式为:

[[1*11+2*13],[0, 1*12+2*14b = np.array([[3*11+4*13],[0, 3*12+4*14]]

numpy.vdot()

numpy.vdot() 函数是两个向量的点积。 如果第一个参数是复数,那么它的共轭复数会用于计算。 如果参数是多维数组,它会被展开。

 import numpy.matlib
 Exemplo
 import numpy as np1],[0,2b = np.array([[3],[0,4],[ 
 print('Matriz b: ')11],[0,12b = np.array([[13],[0,14],[ 
  
 # vdot 将数组展开计算内积
 print (np.vdot(a,b))

A solução é:

 130

计算式为:

1*11 + 2*12 + 3*13 + 4*14 = 130

numpy.inner()

numpy.inner() 函数返回一维数组的向量内积。对于更高的维度,它返回最后一个轴上的和的乘积。

 import numpy.matlib
 print (np.inner(np.array([1],[0,2],[0,3]),np.array([0,1,0]])
 # equivalente a 1*0+2*1+3*0

A solução é:

   2
 Exemplo 
 import numpy as np1],[0,2], [3],[0,4],[ 
  
 ,
 print('Array a: ')
 print('Matriz b: ')11],[0, 12], [13],[0, 14],[ 
  
 print('array b:')
 print(]]
  
 print('produto escalar:')
 print(np.inner(a, b))

A solução é:

 Resultados de Saída:
 [[1 2]
  [3 4]]
 array b:
 [[11 12]
  [13 14]]
 produto escalar:
 [[35 41]
  [81 95]]
 Resultados de Saída:
 [[1 2]
  [3 4]]
 array b:
 [[11 12]
  [13 14]]
 produto escalar:
 [[35 41]
  [81 95]]

a expressão de cálculo do produto escalar é:

 1*11+2*12],[0, 1*13+2*14 
 3*11+4*12],[0, 3*13+4*14

numpy.matmul

A função numpy.matmul retorna o produto matricial de dois arrays. Embora ela retorne o produto normal de arrays bidimensionais, se a dimensão de qualquer parâmetro for maior que2e é considerado como uma pilha de matrizes existente nas últimas duas posições, realizando a correspondente broadcast.

Por outro lado, se algum parâmetro for um array unidimensional, ele é adicionado 1 para elevá-lo a uma matriz e ser removido após a multiplicação.

Para arrays bidimensionais, ele é a multiplicação matricial:

 import numpy.matlib 
 Exemplo 
  
 a = [[1,0],[0,1]] 
 b = [[4],[0,1b = np.array([[2],[0,2]] 
 print(np.matmul(a, b))

A solução é:

   [[4 1] 
  [2 2]]

operações bidimensionais e unidimensionais:

 import numpy.matlib 
 Exemplo 
  
 a = [[1,0],[0,1]] 
 b = [1],[0,2] 
 print(np.matmul(a, b))
 print(np.matmul(b, a))

A solução é:

 [1 2] 
 [1 2]

arrays de dimensão maior que dois:

 import numpy.matlib 
 Exemplo 
  
 a = np.arange(8).reshape(2],[0,2],[0,2) 
 b = np.arange(4).reshape(2],[0,2) 
 print(np.matmul(a, b))

A solução é:

   [[[ 2 3]
   [ 6 11]]
  [[10 19]
   [14 27]]

numpy.linalg.det()

A função numpy.linalg.det() calcula o determinante da matriz fornecida.

O determinante é um valor muito útil na álgebra linear. Ele é calculado a partir dos elementos da diagonal da matriz. Para 2×2 matriz, que é a diferença do produto dos elementos superior esquerdo e inferior direito com o produto dos outros dois.

Ou seja, para a matriz [[a, b], [c, d]], o determinante é calculado como ad-bc. A matriz quadrada maior é considerada 2×2 composição de matrizes.

Exemplo
import numpy as np1],[0,2], [3],[0,4],[ 
  
print(np.linalg.det(a))

A solução é:

-2.0
 Exemplo
  
 print('Matriz b: ')6],[0,1],[0,1], [4],[0, -2],[0, 5], [2],[0,8],[0,7],[ 
 print(]]
 print(np.linalg.det(b))
 print(6*(-2*7 - 5*8) - 1*(4*7 - 5*2) + 1*(4*8 - -2*2))

A solução é:

   [[ 6 1 1]
  [ 4 -2 5]
  [ 2 8 7]]
 -306.0
 -306

numpy.linalg.solve()

A função numpy.linalg.solve() fornece a solução da equação linear em forma matricial.

Considere a seguinte equação linear:

 x + y + z = 6
 2y + 5z = -4
 2x + 5y - z = 27

Pode ser representada matematicamente como:

Se a matriz se tornar A, X e B, a equação se torna:

 AX = B
 ou
 X = A^(-1)B

numpy.linalg.inv()

A função numpy.linalg.inv() calcula a inversa multiplicativa da matriz.

Matriz inversa (inverse matrix)Definimos que A é uma matriz de ordem n em um campo de números, se existir outra matriz de ordem n, B, no mesmo campo de números, tal que: AB = BA = E, então chamamos B de inversa de A e A é chamada de matriz invertível. Nota: E é a matriz unitária.

 Exemplo 
  
 ]]1],[0,2b = np.array([[3],[0,4],[ 
 x = np.array([[ 
 x = np.linalg.solve(a, b)
 y = np.linalg.inv(x)
 print(y)

A solução é:

 [[1 2]
  [3 4]]
 [[-2. 1print(np.dot(x, y))
  [ 1.5 -0.5]]
 [[1e+. ]+00 0.0000000e
  [8.881784200]-16 1e+.0000000e

00]]

 Exemplo 
  
 import numpy as np1],[0,1],[0,1a = np.array([[2],[0,5b = np.array([[2],[0,5],[0,-1],[ 
  
 ,
 print('Array a: ')
 print(a) 
  
 ainv = np.linalg.inv(a)
 print('Inversão de a: ')
  
 print(ainv)
 print('Matriz b: ')6b = np.array([[-4b = np.array([[27],[ 
 print(]]
  
 print(b)-1print('Cálculo: A^(
 )B:') 
 x = np.linalg.solve(a, b)
 print(x) 5# Isso é a direção linear x = 3, y = -2 , z =

A solução é:

 Resultados de Saída:
 [[ 1 1 1]
  Array a: 2 5]
  [ 2 5 -1]]
 Inversão de a: [ 0
 [[ 1.28571429 -0.28571429 -0.14285714]
  [-0.47619048 0.14285714 0.23809524]
  [ 0.19047619 0.14285714 -0.0952381 ]]
 Matriz b:
 [[ 6]
  [-4]
  [27]]
 Cálculo: A^(-1)B:
 [[ 5.]
  [ 3.]
  [-2.]]
   x = np.dot(ainv, b)