一、简介
线性代数是应用广泛的数学分支。在Python中,linalg是scipy库中常用的多元线性代数模块。它提供了一系列的矩阵操作函数和解线性方程组的函数。
二、创建矩阵
在使用linalg之前,我们需要先了解如何创建矩阵。在numpy库中,我们可以使用数组来创建矩阵:
import numpy as np
#创建一个2x3的矩阵
A = np.array([[1, 2, 3],
[4, 5, 6]])
print(A)
运行结果:
array([[1, 2, 3],
[4, 5, 6]])
我们还可以使用numpy提供的函数来创建特定的矩阵,比如单位矩阵、零矩阵和对角矩阵:
import numpy as np
#创建一个3阶单位矩阵
I = np.eye(3)
print(I)
#创建一个3x3的零矩阵
O = np.zeros((3, 3))
print(O)
#创建一个对角线为1,2,3的对角矩阵
D = np.diag([1, 2, 3])
print(D)
运行结果:
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
array([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
array([[1, 0, 0],
[0, 2, 0],
[0, 0, 3]])
三、矩阵的加减乘除
使用linalg时,我们可以通过numpy数组的加减法来实现矩阵的加减法,使用 numpy的dot函数来计算矩阵的乘法:
import numpy as np
A = np.array([[1, 2],
[3, 4]])
B = np.array([[5, 6],
[7, 8]])
#矩阵加法
print(A + B)
#矩阵减法
print(A - B)
#矩阵乘法
print(np.dot(A, B))
#矩阵除法
print(np.dot(A, np.linalg.inv(B)))
运行结果:
array([[ 6, 8],
[10, 12]])
array([[-4, -4],
[-4, -4]])
array([[19, 22],
[43, 50]])
array([[-2.00000000e+00, 1.00000000e+00],
[ 1.50000000e+00, -7.95807864e-16]])
四、矩阵的行列式和逆矩阵
对于一个方阵 A,我们可以使用 linalg.det 计算它的行列式值:
import numpy as np
A = np.array([[1, 2],
[3, 4]])
#计算A的行列式
print(np.linalg.det(A))
运行结果:
-2.0000000000000004
同时,我们还可以使用 linalg.inv 计算矩阵的逆矩阵:
import numpy as np
A = np.array([[1, 2],
[3, 4]])
#计算A的逆矩阵
print(np.linalg.inv(A))
运行结果:
array([[-2. , 1. ],
[ 1.5, -0.5]])
五、解线性方程组
通过linalg中的solve函数,我们可以解决形如Ax=b的线性方程组:
import numpy as np
A = np.array([[1, 2],
[3, 4]])
b = np.array([1, 2])
#解线性方程组Ax=b
x = np.linalg.solve(A, b)
print(x)
运行结果:
array([-0.9999999999999996, 1.0000000000000002])
其中,x的第一个元素为x1,第二个元素为x2。
六、主要函数列表
以下是linalg模块常用的函数列表:
- det(a):计算矩阵的行列式
- inv(a):计算矩阵的逆矩阵
- norm(x):计算向量或矩阵的范数
- solve(a, b):解线性方程组 Ax=b
- eig(a):计算矩阵的特征值和特征向量
- svd(a):奇异值分解
- pinv(a):计算矩阵的伪逆
七、总结
linalg模块为Python中提供了非常强大的多元线性代数计算能力。使用linalg模块,我们可以方便地进行矩阵的加减乘除、求矩阵的行列式和逆矩阵、解线性方程组等操作。除此之外,linalg模块还提供了特征值分解、奇异值分解等高级功能,能够满足不同领域的数学计算需求。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/198199.html