基于python解线性矩阵方程(numpy中的matrix类)
2019-12-19 07:08
3363 查看
这学期有一门运筹学,讲的两大块儿:线性优化和非线性优化问题。在非线性优化问题这里涉及到拉格朗日乘子法,经常要算一些非常变态的线性方程,于是我就想用python求解线性方程。查阅资料的过程中找到了一个极其简单的解决方式,也学到了不少东西。先把代码给出。
import numpy as np # A = np.mat('1 2 3;2 -1 1;3 0 -1') A = np.array([[1, 2, 3], [2, -1, 1], [3, 0, -1]]) b = np.array([9, 8, 3]) x = np.linalg.solve(A, b) print(x)
是不是很简洁?因为调用了强大的包numpy~ 我们想解决的问题是求解矩阵方程Ax=bAx=b。在这里调用numpy中的线性代数包np.linalg,使用其中的function->solve(A, b)。几行代码就解决了问题。在这里solve函数有两个输入,第一个输入是矩阵,可以采用numpy里的矩阵数据类型或者最常用的数组数据类型。第二个输入是右端项b,一个一维numpy数组即可。函数返回方程的解,shape和b是相同的。如果矩阵A是奇异的或者不是方阵,函数就会报错。
好了,问题得到了绝佳的解决,大不了把python当计算器来用呗~
下面是补充知识:numpy中的matrix类
matrix类是numpy中的一个过时的类,可能会在未来被移除。因为现在大多数人都会用更加灵活好用的ndarray,移除它也是可以理解的。
>>> a = np.matrix('1 2; 3 4') >>> a matrix([[1, 2], [3, 4]]) >>> np.matrix([[1, 2], [3, 4]]) matrix([[1, 2], [3, 4]])
matrix有两种构造方式,从第二种我们看到和一般的数组类型一模一样,在这里我们就能窥到matrix其实就是继承了ndarray,基于ndarray。拿matrix进行线性代数运算是因为它有很多方便的函数。
matrix.T transpose:返回矩阵的转置矩阵 matrix.H hermitian (conjugate) transpose:返回复数矩阵的共轭元素矩阵 matrix.I inverse:返回矩阵a逆矩阵 matrix.A base array:返回矩阵基于的数组<br data-filtered="filtered">matrix.AI flattened ndarray: 返回展平的数组
其他的很多类方法不再介绍,以上四个是最基本的类似语法糖的函数。
需要注意的是,ndarray类型同样能方便地进行转置和求逆。
A = np.array([[1, 2], [3, 4]]) print(A.T) A_I = np.linalg.inv(A)
以上就是本文的全部内容,希望对大家的学习有所帮助
您可能感兴趣的文章:
相关文章推荐
- 【矩阵分解】Python下基于Numpy的四种矩阵基本分解的实现
- win10系统安装numpy,scipy,matplotlib,基于python3.6
- Python基于numpy灵活定义神经网络结构的方法
- Python基于Numpy和PIL库的PCA人脸识别
- 【机器学习算法实现】主成分分析 PCA ——基于python+numpy
- 基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
- python 基于numpy和PIL的图像局部熵计算方法
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍 一、pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主
- 安装基于Python3 的NumPy, SciPy, matplotlib和Scikit-Learn
- 安装基于Python3 的NumPy, SciPy和Scikit-Learn
- Python 学习之一:在Mac OS X下基于Sublime Text搭建开发平台包含numpy,scipy
- 【机器学习算法实现】主成分分析(PCA)——基于python+numpy
- Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
- <深度学习系列>基于numpy和python的反向传播算法的实现与分析
- 基于Python Numpy的数组array和矩阵matrix详解
- python基于numpy的多维数组排序
- 基于Win7 Python2.7的Numpy安装包分享
- [开发技巧]·Python极简实现滑动平均滤波(基于Numpy.convolve)
- 【机器学习算法实现】主成分分析(PCA)——基于python+numpy
- 基于python和numpy的KNN手写识别