基于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的Twisted框架的核心特性
May 25 Python
python中函数传参详解
Jul 03 Python
Python实现读写INI配置文件的方法示例
Jun 09 Python
对python数据切割归并算法的实例讲解
Dec 12 Python
基于python实现百度翻译功能
May 09 Python
Python替换月份为英文缩写的实现方法
Jul 15 Python
如何为Python终端提供持久性历史记录
Sep 03 Python
Python socket实现的文件下载器功能示例
Nov 15 Python
python计算无向图节点度的实例代码
Nov 22 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
May 22 Python
完美处理python与anaconda环境变量的冲突问题
Apr 07 Python
PyQt5实现多张图片显示并滚动
Jun 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
php中文验证码实现方法
2015/06/18 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
2017/05/29 PHP
PHP检查端口是否可以被绑定的方法示例
2018/08/09 PHP
golang实现php里的serialize()和unserialize()序列和反序列方法详解
2018/10/30 PHP
利用WebBrowser彻底解决Web打印问题(包括后台打印)
2009/06/22 Javascript
javascript json 新手入门文档
2009/12/03 Javascript
JQUERY获取form表单值的代码
2010/07/17 Javascript
js控制CSS样式属性语法对照表
2012/12/11 Javascript
如何使Chrome控制台支持多行js模式——意外发现
2013/06/13 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
2014/06/15 Javascript
JavaScript实现同时调用多个函数的方法
2015/11/09 Javascript
angularJs中datatable实现代码
2017/06/03 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
2017/07/17 jQuery
使用webpack打包koa2 框架app
2018/02/02 Javascript
微信小程序实现选项卡滑动切换
2020/10/22 Javascript
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
Javascript中的奇葩知识,你知道吗?
2021/01/25 Javascript
Python StringIO模块实现在内存缓冲区中读写数据
2015/04/08 Python
实例讲解Python的函数闭包使用中应注意的问题
2016/06/20 Python
浅谈python爬虫使用Selenium模拟浏览器行为
2018/02/23 Python
Pandas之drop_duplicates:去除重复项方法
2018/04/18 Python
Python中文件的读取和写入操作
2018/04/27 Python
Python实现带下标索引的遍历操作示例
2019/05/30 Python
使用Python的networkx绘制精美网络图教程
2019/11/21 Python
Puritan’s Pride(普丽普莱)官方网站:美国最大最全的保健品公司之一
2016/10/23 全球购物
美国生日蛋糕店:Bake Me A Wish!
2017/02/08 全球购物
护理毕业生自荐信范文
2013/12/22 职场文书
自我评价如何写好?
2014/01/05 职场文书
乔迁之喜主持词
2014/03/27 职场文书
小学生家长寄语
2014/04/02 职场文书
自主招生推荐信格式模板
2015/03/24 职场文书
2015年学校精神文明工作总结
2015/05/27 职场文书
2016新年年会主持词
2015/07/06 职场文书
详解Spring事件发布与监听机制
2021/06/30 Java/Android
草系十大最强宝可梦,纸片人上榜,榜首大家最熟悉
2022/03/18 日漫
Win11安全功能升级:内置防网络钓鱼功能
2022/04/08 数码科技