基于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实现从URL地址提取文件名的方法
May 15 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
Nov 11 Python
python利用sklearn包编写决策树源代码
Dec 21 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
May 18 Python
PyCharm设置护眼背景色的方法
Oct 29 Python
Python基本socket通信控制操作示例
Jan 30 Python
Python函数中不定长参数的写法
Feb 13 Python
详解python和matlab的优势与区别
Jun 28 Python
使用pytorch实现可视化中间层的结果
Dec 30 Python
在Python中通过threshold创建mask方式
Feb 19 Python
python3代码中实现加法重载的实例
Dec 03 Python
Pygame Draw绘图函数的具体使用
Nov 17 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
手把手教你使用DedeCms的采集的图文教程
2007/03/11 PHP
PHP生成各种常见验证码和Ajax验证过程
2016/01/10 PHP
Laravel中间件实现原理详解
2016/10/09 PHP
php 从一个数组中随机的取出若干个不同的数实例
2016/12/31 PHP
PHP+Session防止表单重复提交的解决方法
2018/04/09 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
MooTools 页面滚动浮动层智能定位实现代码
2011/08/23 Javascript
js校验表单后提交表单的三种方法总结
2014/02/28 Javascript
jquery删除数据记录时的弹出提示效果
2014/05/06 Javascript
jQuery实现菜单式图片滑动切换
2015/03/14 Javascript
AngularJS模块详解及示例代码
2016/08/17 Javascript
JS绘制微信小程序画布时钟
2016/12/24 Javascript
vue2.0数据双向绑定与表单bootstrap+vue组件
2017/02/27 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
2017/03/03 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
nodejs简单读写excel内容的方法示例
2018/03/16 NodeJs
详解vue.js根据不同环境(正式、测试)打包到不同目录
2018/07/13 Javascript
jQuery中ajax请求后台返回json数据并渲染HTML的方法
2018/08/08 jQuery
Echarts之悬浮框中的数据排序问题
2018/11/08 Javascript
详解JS函数防抖
2020/06/05 Javascript
Vue3 实现双盒子定位Overlay的示例
2020/12/22 Vue.js
分析python服务器拒绝服务攻击代码
2014/01/16 Python
通过Python爬虫代理IP快速增加博客阅读量
2016/12/14 Python
python 从csv读数据到mysql的实例
2018/06/21 Python
Python实现图片拼接的代码
2018/07/02 Python
Python 字符串换行的多种方式
2018/09/06 Python
Python3实现的旋转矩阵图像算法示例
2019/04/03 Python
浅析Django中关于session的使用
2019/12/30 Python
Python换行与不换行的输出实例
2020/02/19 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
2020/02/19 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
2020/02/28 Python
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
回复函格式及范文
2015/07/14 职场文书
《秋天的图画》教学反思
2016/02/19 职场文书
浅谈Python数学建模之固定费用问题
2021/06/23 Python
Python实现仓库管理系统
2022/05/30 Python