基于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中urllib2模块的8个使用细节分享
Jan 01 Python
深入理解python中函数传递参数是值传递还是引用传递
Nov 07 Python
Python自定义线程类简单示例
Mar 23 Python
对Python random模块打乱数组顺序的实例讲解
Nov 08 Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
Dec 20 Python
在Pycharm中修改文件默认打开方式的方法
Jan 17 Python
详解python--模拟轮盘抽奖游戏
Apr 12 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
Aug 09 Python
python json.dumps中文乱码问题解决
Apr 01 Python
在python3.64中安装pyinstaller库的方法步骤
Jun 02 Python
python ETL工具 pyetl
Jun 07 Python
python的flask框架难学吗
Jul 31 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使用pdo连接并查询sql数据库的方法
2014/12/24 PHP
php+mysqli使用预处理技术进行数据库查询的方法
2015/01/28 PHP
PHP记录页面停留时间的方法
2016/03/30 PHP
mouse_on_title.js
2006/08/25 Javascript
javascript正则表达式中参数g(全局)的作用
2010/11/11 Javascript
使用apply方法实现javascript中的对象继承
2013/12/16 Javascript
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
js获取当前路径的简单示例代码
2014/01/08 Javascript
网站内容禁止复制和粘贴、另存为的js代码
2014/02/26 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
2014/11/12 Javascript
javascript操作数组详解
2014/12/17 Javascript
浅析javascript中函数声明和函数表达式的区别
2015/02/15 Javascript
基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
2016/01/18 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
2016/06/23 Javascript
vuex实现简易计数器
2016/10/27 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
2016/11/09 Javascript
javascript 删除数组元素和清空数组的简单方法
2017/02/24 Javascript
基于JavaScript实现淘宝商品广告效果
2017/08/10 Javascript
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
vue检测对象和数组的变化分析
2018/06/30 Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
2019/04/01 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
JavaScript监听键盘事件代码实现
2020/06/03 Javascript
python实现超简单端口转发的方法
2015/03/13 Python
使用Python的Zato发送AMQP消息的教程
2015/04/16 Python
Python脚本实时处理log文件的方法
2016/11/21 Python
python leetcode 字符串相乘实例详解
2018/09/03 Python
python爬虫 线程池创建并获取文件代码实例
2019/09/28 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
创立科技Java面试题
2015/11/29 面试题
毕业设计计划书
2014/01/09 职场文书
英语专业个人求职信范文
2014/02/01 职场文书
文秘应届生求职信
2014/07/05 职场文书
企业版Windows 11有哪些新功能? Win11适用于企业的功能介绍
2021/11/21 数码科技
Python matplotlib绘制雷达图
2022/04/13 Python