Numpy线性代数-numpy.linalg.solve()

前言

N u m P y NumPy NumPy提供了线性代数函数库linalg,该库包含了线性代数所需的所有功能,可以看看下面的说明。

函数内容
dot两数组的点积
vdot两向量的点积
inner两数组的内积
determinant数组的行列式
matmul两数组的矩阵积
inv求矩阵的逆
solve求解线性矩阵方程

相关函数介绍

numpy.dot()numpy.dot()

numpy.vdotnumpy.vdot()

numpy.inner()numpy.inner()

numpy.determinant()numpy.determinant()

numpy.matmul()numpy.matmul()

numpy.inv()numpy.inv()

numpy.solve()numpy.solve()

numpy.linalg.solve()

numpy.linalg.solve()函数用于求解矩阵形式的线性方程的解。

比如线性方程:

2 x + 2 y + 2 z = 5 2x + 2y + 2z = 5 2x+2y+2z=5

2 y + 4 z = − 3 2y + 4z = -3 2y+4z=3

2 x + 5 y − 2 z = 26 2x + 5y - 2z = 26 2x+5y2z=26

可以使用矩阵进行表示:
[ 2 2 2 0 2 4 2 5 − 2 ] [ x y z ] = [ 5 − 3 26 ] \begin{bmatrix} 2& 2& 2 \\0& 2 & 4 \\2& 5 &-2 \end{bmatrix} \begin{bmatrix} x \\y \\z \end{bmatrix} = \begin{bmatrix} 5 \\-3 \\26 \end{bmatrix} 202225242xyz=5326

A X = B → X = A − 1 B AX=B\rightarrow X=A^{-1}B AX=BX=A1B

可以看到要使用numpy.linalg.solve()函数求解线性方程,必须先了解矩阵的逆。

numpy.linalg.inv()

numpy.linalg.inv()函数计算矩阵的乘法逆矩阵。

逆矩阵:设A是数域上的一个 n n n阶矩阵,若在相同数域上存在另一个 n n n阶矩阵B,使得: A B = B A = E AB=BA=E AB=BA=E ,则我们称BA的逆矩阵,而A则被称为可逆矩阵。注:E为单位矩阵。

import numpy as np 
a=np.array([[1,2],[3,4]])
b=np.linalg.inv(a)
print("矩阵a:",'\n',a)
print("矩阵b:",'\n',b)
print(np.dot(a,b))
矩阵a: 
 [[1 2]
 [3 4]]
矩阵b: 
 [[-2.   1. ]
 [ 1.5 -0.5]]
[[1.0000000e+00 0.0000000e+00]
 [8.8817842e-16 1.0000000e+00]]

现在可以求解线性方程:

2 x + 2 y + 2 z = 5 2x + 2y + 2z = 5 2x+2y+2z=5

2 y + 4 z = − 3 2y + 4z = -3 2y+4z=3

2 x + 5 y − 2 z = 26 2x + 5y - 2z = 26 2x+5y2z=26

A=np.array([[2,2,2],[0,2,4],[2,5,-2]])
B=np.array([[5],[-3],[26]])
X=np.linalg.solve(A,B)#先传入A(系数矩阵),B(结果矩阵),返回解矩阵X
print("线性方程组的解:\n",X)

a=np.linalg.inv(A)#A 的逆矩阵 
X=np.dot(a,B)#X=A^(-1) B
print("线性方程组的解:\n",X)
线性方程组的解:
 [[ 1.45]
 [ 3.6 ]
 [-2.55]]
线性方程组的解:
 [[ 1.45]
 [ 3.6 ]
 [-2.55]]

可以看出两种方法求出的结果是相同的。

  • 8
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Phoenix_ZengHao

创作不易,能否打赏一瓶饮料?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值