基于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解析模块(ConfigParser)使用方法
Dec 10 Python
Python实现的圆形绘制(画圆)示例
Jan 31 Python
python实现公司年会抽奖程序
Jan 22 Python
Python 监测文件是否更新的方法
Jun 10 Python
Python中最好用的命令行参数解析工具(argparse)
Aug 23 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
Aug 29 Python
python使用paramiko实现ssh的功能详解
Mar 06 Python
python二维图制作的实例代码
Dec 03 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
Dec 17 Python
Pycharm 解决自动格式化冲突的设置操作
Jan 15 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
Mar 01 Python
python中数组和列表的简单实例
Mar 25 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安装攻略:常见问题解答(二)
2006/10/09 PHP
php 无限极分类
2008/03/27 PHP
解析在apache里面给php写虚拟目录的详细方法
2013/06/24 PHP
php实现的替换敏感字符串类实例
2014/09/22 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
JavaScript XML实现两级级联下拉列表
2008/11/10 Javascript
JavaScript 设计模式 安全沙箱模式
2010/09/24 Javascript
JS 毫秒转时间示例代码
2013/09/22 Javascript
jQuery中的Deferred和promise 的区别
2016/04/03 Javascript
对js中回调函数的一些看法
2016/08/29 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
关于jquery layui弹出层的使用方法
2018/04/21 jQuery
Vue中mintui的field实现blur和focus事件的方法
2018/08/25 Javascript
微信小程序实现多选功能
2018/11/04 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
2019/04/24 Javascript
微信小程序如何利用getCurrentPages进行页面传值
2019/07/01 Javascript
koa2 从入门到精通(小结)
2019/07/23 Javascript
React 实现车牌键盘的示例代码
2019/12/20 Javascript
浅谈vue生命周期共有几个阶段?分别是什么?
2020/08/07 Javascript
浅谈实现在线预览PDF的几种解决办法
2020/08/10 Javascript
[54:24]Optic vs TNC 2018国际邀请赛小组赛BO2 第二场
2018/08/18 DOTA
python获取当前日期和时间的方法
2015/04/30 Python
TensorFlow 合并/连接数组的方法
2018/07/27 Python
Python单元测试unittest的具体使用示例
2018/12/17 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
2018/12/21 Python
Python字符串逆序输出的实例讲解
2019/02/16 Python
python中类的输出或类的实例输出为这种形式的原因
2019/08/12 Python
python -v 报错问题的解决方法
2020/09/15 Python
潘多拉珠宝俄罗斯官方网上商店:PANDORA俄罗斯
2020/09/22 全球购物
C#公司笔试题
2014/03/28 面试题
毕业生动漫设计求职信
2013/10/11 职场文书
六十岁生日答谢词
2014/01/10 职场文书
培训楼经理岗位责任制
2014/02/10 职场文书
高中军训第一天感言
2014/03/06 职场文书
万能检讨书
2015/01/27 职场文书
有关浪费资源的建议书
2015/09/14 职场文书