numpy 线性方程组求解、矩阵数乘、矩阵乘法、逆矩阵、方阵LU分解

numpy 线性方程组求解、矩阵数乘、矩阵乘法、逆矩阵、方阵LU分解

numpy 线性方程组求解、矩阵数乘、矩阵乘法、逆矩阵、方阵LU分解_第1张图片numpy 线性方程组求解、矩阵数乘、矩阵乘法、逆矩阵、方阵LU分解_第2张图片numpy 线性方程组求解、矩阵数乘、矩阵乘法、逆矩阵、方阵LU分解_第3张图片



代码如下:

# 3x + y  = 9
# x  + 2y = 8
import numpy as np
import scipy as scipy
from scipy import linalg
a = np.array([[3,1],[1,2]])
b = np.array([9,8])
result = np.linalg.solve(a,b)
print result 


A = np.array([[1,2,3],
              [4,5,7],
              [7,8,9]])
I = np.eye(3)
print A
print I
print 3*A
print A+I
print A.T
print np.dot(A, I)
print np.linalg.inv(A)


A = np.array([[1,2,3],
              [4,5,7],
              [7,8,9]])

l,u = scipy.linalg.lu(A,True)
print 'l=========='
print l
print 'u=========='
print u

print np.dot(l, u)

运行结果如下:

G:\ProgramData\Anaconda3\envs\untitled\python.exe D:/PycharmProjects/AI2018/numpyTest/linalgTest.py
[ 2.  3.]

[[1 2 3]
 [4 5 7]
 [7 8 9]]

[[ 1.  0.  0.]
 [ 0.  1.  0.]
 [ 0.  0.  1.]]

[[ 3  6  9]
 [12 15 21]
 [21 24 27]]

[[  2.   2.   3.]
 [  4.   6.   7.]
 [  7.   8.  10.]]

[[1 4 7]
 [2 5 8]
 [3 7 9]]

[[ 1.  2.  3.]
 [ 4.  5.  7.]
 [ 7.  8.  9.]]

[[-1.83333333  1.         -0.16666667]
 [ 2.16666667 -2.          0.83333333]
 [-0.5         1.         -0.5       ]]

l==========
[[ 0.14285714  1.          0.        ]
 [ 0.57142857  0.5         1.        ]
 [ 1.          0.          0.        ]]
u==========
[[ 7.          8.          9.        ]
 [ 0.          0.85714286  1.71428571]
 [ 0.          0.          1.        ]]

[[ 1.  2.  3.]
 [ 4.  5.  7.]
 [ 7.  8.  9.]]

Process finished with exit code 0 

矩阵LU分解人工计算的结果和scipy.linalg.lu(A,True)的计算有点区别,人工对矩阵LU分解为标准的下三角形矩阵和上三角形矩阵,scipy.linalg.lu中的L矩阵不是标准的下三角形矩阵。

numpy 线性方程组求解、矩阵数乘、矩阵乘法、逆矩阵、方阵LU分解_第4张图片


print '### L ##'
A1 = np.mat("1 0 0;4 1 0;0 0 1")
A2 = np.mat("1 0 0;0 1 0;7 0 1")
A3 = np.mat("1 0 0;0 -1 0;0 0 1")
A4 = np.mat("1 0 0;0 1 0;0 0 -1")
A5 = np.mat("1 0 0;0 1 0;0 2 1")
reslut1= np.dot(A1, A2)
reslut2= np.dot(reslut1, A3)
reslut3= np.dot(reslut2, A4)
L= np.dot(reslut3, A5)
print L
print '### U ##'
U=np.mat("1 2 3;0 3 5;0 0 2")
print U
print '### L * U ##'
print np.dot(L, U)

运行结果如下

### L ##
[[ 1  0  0]
 [ 4 -1  0]
 [ 7 -2 -1]]
### U ##
[[1 2 3]
 [0 3 5]
 [0 0 2]]
### L * U ##
[[1 2 3]
 [4 5 7]
 [7 8 9]]


你可能感兴趣的:(AI,&,Big,Data案例实战课程)