基于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 相关文章推荐
Python collections模块实例讲解
Apr 07 Python
python实现汉诺塔方法汇总
Jul 25 Python
Python机器学习logistic回归代码解析
Jan 17 Python
python中requests和https使用简单示例
Jan 18 Python
Django Rest framework权限的详细用法
Jul 25 Python
使用Puppeteer爬取微信文章的实现
Feb 11 Python
详解python常用命令行选项与环境变量
Feb 20 Python
Python图像处理库PIL的ImageGrab模块介绍详解
Feb 26 Python
Python 输出详细的异常信息(traceback)方式
Apr 08 Python
pandas DataFrame 数据选取,修改,切片的实现
Apr 24 Python
基于pandas向csv添加新的行和列
May 25 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
Jun 02 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创建PDF中文文档
2006/10/09 PHP
PHP strtok()函数的优点分析
2010/03/02 PHP
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
2010/04/07 PHP
php中的strpos使用示例
2014/02/27 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
2015/04/09 PHP
在线编辑器的实现原理(兼容IE和FireFox)
2007/03/09 Javascript
简单的Jquery遮罩层代码实例
2013/11/14 Javascript
iframe里使用JavaScript控制主页转向的方法
2015/04/03 Javascript
javascript模拟C#格式化字符串
2015/08/26 Javascript
jquery获取文档高度和窗口高度汇总
2016/01/25 Javascript
【JS+CSS3】实现带预览图幻灯片效果的示例代码
2016/03/17 Javascript
基于React.js实现原生js拖拽效果引发的思考
2016/03/30 Javascript
js制作可以延时消失的菜单
2017/01/13 Javascript
基于jQuery.i18n实现web前端的国际化
2018/05/04 jQuery
js实现GIF动图分解成多帧图片上传
2019/10/24 Javascript
NodeJS配置CORS实现过程详解
2020/12/02 NodeJs
[50:11]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第三场
2018/04/09 DOTA
[11:33]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第二场
2018/04/06 DOTA
[43:35]EG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python代码实现ID3决策树算法
2017/12/20 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
2018/06/05 Python
python 制作自定义包并安装到系统目录的方法
2018/10/27 Python
50行Python代码获取高考志愿信息的实现方法
2019/07/23 Python
使用 django orm 写 exists 条件过滤实例
2020/05/20 Python
Python实现壁纸下载与轮换
2020/10/19 Python
cookies应对python反爬虫知识点详解
2020/11/25 Python
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
介绍一下你对SOA的认识
2016/04/24 面试题
白酒市场营销方案
2014/02/25 职场文书
《搭石》教学反思
2014/04/07 职场文书
合作协议书怎么写
2014/04/18 职场文书
应用心理学专业求职信
2014/08/04 职场文书
学院党的群众路线教育实践活动第一阶段情况汇报
2014/10/25 职场文书
个人廉洁自律总结
2015/03/06 职场文书
MySQL优化常用的19种有效方法(推荐!)
2022/03/17 MySQL