基于python解线性矩阵方程(numpy中的matrix类)


Posted in Python onOctober 21, 2019

这学期有一门运筹学,讲的两大块儿:线性优化和非线性优化问题。在非线性优化问题这里涉及到拉格朗日乘子法,经常要算一些非常变态的线性方程,于是我就想用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 相关文章推荐
pycharm 使用心得(九)解决No Python interpreter selected的问题
Jun 06 Python
Python基于回溯法子集树模板解决m着色问题示例
Sep 07 Python
python库lxml在linux和WIN系统下的安装
Jun 24 Python
python 重命名轴索引的方法
Nov 10 Python
解决pandas .to_excel不覆盖已有sheet的问题
Dec 10 Python
Python使用Shelve保存对象方法总结
Jan 28 Python
python使用PyQt5的简单方法
Feb 27 Python
Python考拉兹猜想输出序列代码实践
Jul 05 Python
Flask框架模板渲染操作简单示例
Jul 31 Python
Python之Numpy的超实用基础详细教程
Oct 23 Python
keras实现图像预处理并生成一个generator的案例
Jun 17 Python
Python自动创建Excel并获取内容
Sep 16 Python
python打印直角三角形与等腰三角形实例代码
Oct 20 #Python
python配置文件写入过程详解
Oct 19 #Python
python实现广度优先搜索过程解析
Oct 19 #Python
python字符串格式化方式解析
Oct 19 #Python
基于python3监控服务器状态进行邮件报警
Oct 19 #Python
使用python绘制温度变化雷达图
Oct 18 #Python
详解numpy矩阵的创建与数据类型
Oct 18 #Python
You might like
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
2011/05/29 PHP
thinkphp获取栏目和文章当前位置的方法
2014/10/29 PHP
PHP 错误处理机制
2015/07/06 PHP
PHP实现的猴王算法(猴子选大王)示例
2018/04/30 PHP
HTML颜色选择器实现代码
2010/11/23 Javascript
JavaScript flash复制库类 Zero Clipboard
2011/01/17 Javascript
JS重要知识点小结
2011/11/06 Javascript
JavaScript加强之自定义event事件
2013/09/21 Javascript
前端开发过程中浏览器版本的两种判定方法
2013/10/30 Javascript
用js一次改变多个input的readonly属性值的方法
2014/06/11 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
2014/12/18 Javascript
jquery中trigger()无法触发hover事件的解决方法
2015/05/07 Javascript
Javascript实现获取及设置光标位置的方法
2015/07/21 Javascript
Javascript验证Visa和MasterCard信用卡号的方法
2015/07/27 Javascript
jquery性能优化高级技巧
2015/08/24 Javascript
AngularJs解决跨域问题案例详解(简单方法)
2016/05/19 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
常用的javascript设计模式
2017/01/11 Javascript
electron踩坑之dialog中的callback解决
2020/10/06 Javascript
Vue实现简单购物车功能
2020/12/13 Vue.js
python正则表达式判断字符串是否是全部小写示例
2013/12/25 Python
Python3 正在毁灭 Python的原因分析
2014/11/28 Python
浅谈Python中函数的参数传递
2016/06/21 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
2017/09/12 Python
python3.x 将byte转成字符串的方法
2018/07/17 Python
python中pip的安装与使用教程
2018/08/10 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
2019/09/29 Python
基于python操作ES实例详解
2019/11/16 Python
python中tab键是什么意思
2020/06/18 Python
python 怎样进行内存管理
2020/11/10 Python
详解CSS3的perspective属性设置3D变换距离的方法
2016/05/23 HTML / CSS
CSS3制作3D立方体loading特效
2020/11/09 HTML / CSS
HTML5 播放 RTSP 视频的实例代码
2019/07/29 HTML / CSS
意大利团购网站:Groupon意大利
2016/10/11 全球购物
办公室秘书自我鉴定
2014/01/18 职场文书
乡镇总工会学雷锋活动总结
2014/03/01 职场文书