基于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中使用zlib模块进行数据压缩的教程
Jun 26 Python
python的文件操作方法汇总
Nov 10 Python
python 把列表转化为字符串的方法
Oct 23 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
Dec 07 Python
Django后端接收嵌套Json数据及解析详解
Jul 17 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
Aug 16 Python
Python scrapy增量爬取实例及实现过程解析
Dec 24 Python
Django 解决阿里云部署同步数据库报错的问题
May 14 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
Jun 24 Python
Python数据可视化常用4大绘图库原理详解
Oct 23 Python
python的setattr函数实例用法
Dec 16 Python
Python中使用subprocess库创建附加进程
May 11 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
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
2013/05/08 PHP
6种php上传图片重命名的方法实例
2013/11/04 PHP
PHP实现格式化文件数据大小显示的方法
2015/01/03 PHP
javascript写的一个链表实现代码
2009/10/25 Javascript
理解Javascript_13_执行模型详解
2010/10/20 Javascript
基于jquery的不规则矩形的排列实现代码
2012/04/16 Javascript
js中页面的重新加载(当前页面/上级页面)及frame或iframe元素引用介绍
2013/01/24 Javascript
JS实现的省份级联实例代码
2013/06/24 Javascript
Js base64 加密解密介绍
2013/10/11 Javascript
Javascript实现div的toggle效果实例分析
2015/06/09 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
2015/08/20 Javascript
JavaScript实现非常简单实用的下拉菜单效果
2015/08/27 Javascript
原生js和jQuery实现淡入淡出轮播效果
2015/12/25 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
2016/02/16 Javascript
jQuery插件ajaxFileUpload使用实例解析
2016/10/19 Javascript
jQuery的ready方法实现原理分析
2016/10/26 Javascript
微信小程序中的onLoad详解及简单实例
2017/04/05 Javascript
Node.js学习之查询字符串解析querystring详解
2017/09/28 Javascript
JavaScript简单实现合并两个Json对象的方法示例
2017/10/16 Javascript
js 根据对象数组中的属性进行排序实现代码
2019/09/12 Javascript
layui问题之自动滚动二级iframe页面到指定位置的方法
2019/09/18 Javascript
Vue 中 filter 与 computed 的区别与用法解析
2019/11/21 Javascript
python中sets模块的用法实例
2014/09/30 Python
python爬虫的一个常见简单js反爬详解
2019/07/09 Python
Python3 itchat实现微信定时发送群消息的实例代码
2019/07/12 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
2020/02/10 Python
计算Python Numpy向量之间的欧氏距离实例
2020/05/22 Python
日本面向世界,国际级的免税在线购物商城:DOKODEMO
2017/02/01 全球购物
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
一句话工作感言
2014/03/01 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
党的群众路线教育实践活动剖析材料
2014/09/30 职场文书
大学生青年志愿者活动总结
2015/05/06 职场文书
Python实现文本文件拆分写入到多个文本文件的方法
2021/04/18 Python
Golang MatrixOne使用介绍和汇编语法
2022/04/19 Golang
tomcat下部署jenkins的方法
2022/05/06 Servers