基于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创建一个最简单http webserver服务器的方法
May 08 Python
RC4文件加密的python实现方法
Jun 30 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
Aug 03 Python
Django 生成登陆验证码代码分享
Dec 12 Python
通过cmd进入python的实例操作
Jun 26 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
Feb 29 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
Mar 06 Python
Python利用PyPDF2库获取PDF文件总页码实例
Apr 03 Python
python中导入 train_test_split提示错误的解决
Jun 19 Python
python进度条显示之tqmd模块
Aug 22 Python
python3处理word文档实例分析
Dec 01 Python
使用Python脚本对GiteePages进行一键部署的使用说明
May 27 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查询操作实现投票功能
2016/05/09 PHP
来自chinaz的ajax获取评论代码
2008/05/03 Javascript
JS实现Fisheye效果动感放大菜单代码
2015/10/21 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
2016/06/09 Javascript
EasyUI Pagination 分页的两种做法小结
2016/07/09 Javascript
利用javascript实现的三种图片放大镜效果实例(附源码)
2017/01/23 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
浅谈angular4.0中路由传递参数、获取参数最nice的写法
2018/03/12 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
2018/08/13 Javascript
javascript中UMD规范的代码推演
2018/08/29 Javascript
详解Puppeteer前端自动化测试实践
2019/02/21 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
Python捕捉和模拟鼠标事件的方法
2015/06/03 Python
Python中对象迭代与反迭代的技巧总结
2016/09/17 Python
Python双精度浮点数运算并分行显示操作示例
2017/07/21 Python
Python实现简单的语音识别系统
2017/12/13 Python
Python设计模式之观察者模式简单示例
2018/01/10 Python
flask入门之文件上传与邮件发送示例
2018/07/18 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
2018/10/09 Python
浅谈django rest jwt vue 跨域问题
2018/10/26 Python
python中property属性的介绍及其应用详解
2019/08/29 Python
Python Django2.0集成Celery4.1教程
2019/11/19 Python
python tkinter之 复选、文本、下拉的实现
2020/03/04 Python
浅谈Python中的模块
2020/06/10 Python
浅谈对python中if、elif、else的误解
2020/08/20 Python
Python ellipsis 的用法详解
2020/11/20 Python
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
Vrbo英国:预订度假屋
2020/08/19 全球购物
"引用"与指针的区别是什么
2016/09/07 面试题
平面设计求职信
2014/03/10 职场文书
《白鹅》教学反思
2014/04/13 职场文书
学生自我评语
2015/01/04 职场文书
2015大学生党员自我评价范文
2015/03/03 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
八年级历史教学反思
2016/02/19 职场文书
导游词之无锡华莱坞
2019/12/02 职场文书