基于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 相关文章推荐
Pyramid将models.py文件的内容分布到多个文件的方法
Nov 27 Python
Python实现的计算器功能示例
Apr 26 Python
Python视频爬虫实现下载头条视频功能示例
May 07 Python
在Django中输出matplotlib生成的图片方法
May 24 Python
Python使用matplotlib绘制随机漫步图
Aug 27 Python
Python零基础入门学习之输入与输出
Apr 03 Python
Django 全局的static和templates的使用详解
Jul 19 Python
python统计字符的个数代码实例
Feb 07 Python
python开发前景如何
Jun 11 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
Jul 05 Python
python实现监听键盘
Apr 26 Python
Python 发送SMTP邮件的简单教程
Jun 24 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实现插入排序?
2013/04/10 PHP
PHP将XML转数组过程详解
2013/11/13 PHP
PHP获取一个字符串中间一部分字符的方法
2014/08/19 PHP
PHP缓冲区用法总结
2016/02/14 PHP
在网页中屏蔽快捷键
2006/09/06 Javascript
兼容Mozilla必须知道的知识。
2007/01/09 Javascript
初学Javascript的一些总结
2008/11/03 Javascript
JavaScript 轻松搞定快捷留言功能 只需一行代码
2010/04/01 Javascript
javascript Window及document对象详细整理
2011/01/12 Javascript
JS中的this变量的使用介绍
2013/10/21 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
2016/03/23 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
2016/07/14 Javascript
js中获取键盘事件的简单实现方法
2016/10/10 Javascript
ES6中Math对象新增的方法实例详解
2017/04/25 Javascript
windows下vue-cli及webpack搭建安装环境
2017/04/25 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
JS实现获取当前所在周的周六、周日示例分析
2019/05/11 Javascript
微信小程序+云开发实现欢迎登录注册
2019/05/24 Javascript
vue实现输入框自动跳转功能
2020/05/20 Javascript
用PyQt进行Python图形界面的程序的开发的入门指引
2015/04/14 Python
python 定义类时,实现内部方法的互相调用
2019/12/25 Python
Python终端输出彩色字符方法详解
2020/02/11 Python
Nixon手表英国官网:美国尼克松手表品牌
2020/02/10 全球购物
Strathberry苏贝瑞中国官网:西班牙高级工匠手工打造
2020/10/19 全球购物
应届大专毕业生个人自荐信
2013/09/22 职场文书
干部现实表现材料
2014/02/13 职场文书
中秋晚会策划方案
2014/06/12 职场文书
倡议书格式及范文
2015/04/29 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书
优秀教师主要事迹材料
2015/11/04 职场文书
Elasticsearch 索引操作和增删改查
2022/04/19 Python
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript