基于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 urllib模块urlopen()与urlretrieve()详解
Nov 01 Python
python处理文本文件并生成指定格式的文件
Jul 31 Python
理解Python中的With语句
Feb 02 Python
详解python3百度指数抓取实例
Dec 12 Python
python3 模拟登录v2ex实例讲解
Jul 13 Python
在python里从协程返回一个值的示例
Feb 19 Python
基于python实现从尾到头打印链表
Nov 02 Python
关于numpy.where()函数 返回值的解释
Dec 06 Python
Python获取、格式化当前时间日期的方法
Feb 10 Python
appium+python adb常用命令分享
Mar 06 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
Mar 06 Python
手把手教你用Django执行原生SQL的方法
Feb 18 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
用Socket发送电子邮件
2006/10/09 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
php对象在内存中的存在形式分析
2015/02/03 PHP
PHP中把数据库查询结果输出为json格式简单实例
2015/04/09 PHP
PHP基于mssql扩展远程连接MSSQL的简单实现方法
2016/10/08 PHP
PHP解耦的三重境界(浅谈服务容器)
2017/03/13 PHP
laravel ORM 只开启created_at的几种方法总结
2018/01/29 PHP
PHP设计模式之原型模式定义与用法详解
2018/04/03 PHP
JQuery 操作Javascript对象和数组的工具函数小结
2010/01/22 Javascript
使用angular写一个hello world
2015/01/23 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
2015/04/16 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
jquery仿ps颜色拾取功能
2017/03/08 Javascript
详解Node.js 命令行程序开发教程
2017/06/07 Javascript
深入理解JavaScript的async/await
2018/08/05 Javascript
IE9 elementUI文件上传的问题解决
2018/10/17 Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
2019/02/20 Javascript
javascript中的this作用域详解
2019/07/15 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
vue分页插件的使用方法
2019/12/25 Javascript
Python的Django框架中的select_related函数对QuerySet 查询的优化
2015/04/01 Python
Python处理字符串之isspace()方法的使用
2015/05/19 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
在Django admin中编辑ManyToManyField的实现方法
2019/08/09 Python
python-web根据元素属性进行定位的方法
2019/12/13 Python
浅谈matplotlib中FigureCanvasXAgg的用法
2020/06/16 Python
Python如何实现远程方法调用
2020/08/07 Python
德国圣伯纳德草药屋:Kräuterhaus Sanct Bernhard(有中文站)
2018/08/05 全球购物
Ray-Ban雷朋太阳眼镜英国官网:Ray-Ban UK
2019/11/23 全球购物
党校学习思想汇报
2014/01/06 职场文书
2014年银行个人工作总结
2014/12/05 职场文书
会议接待欢迎词范文
2015/01/26 职场文书
公司租车协议书
2015/01/29 职场文书
工会积极分子个人总结
2015/03/03 职场文书
债务纠纷起诉书
2015/05/20 职场文书
PyQt5 QThread倒计时功能的实现代码
2021/04/02 Python