基于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进行验证码识别的一些想法
Jan 25 Python
对命令行模式与python交互模式介绍
May 12 Python
在PyCharm中三步完成PyPy解释器的配置的方法
Oct 29 Python
python调用opencv实现猫脸检测功能
Jan 15 Python
python实现图书借阅系统
Feb 20 Python
Python实现京东秒杀功能代码
May 16 Python
python hough变换检测直线的实现方法
Jul 12 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
Dec 25 Python
Python configparser模块常用方法解析
May 22 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
Jul 06 Python
Python如何实现Paramiko的二次封装
Jan 30 Python
python SOCKET编程基础入门
Feb 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版(3)
2006/10/09 PHP
我的php学习笔记(毕业设计)
2012/02/21 PHP
django中的ajax组件教程详解
2018/10/18 PHP
Laravel 数据库加密及数据库表前缀配置方法
2019/10/10 PHP
javascript 节点遍历函数
2010/03/28 Javascript
javascript中的继承实例代码
2011/04/27 Javascript
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
2013/03/25 Javascript
javascript里绝对用的上的字符分割函数总结
2014/07/31 Javascript
js对象继承之原型链继承实例
2015/01/10 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
全屏js头像上传插件源码高清版
2016/03/29 Javascript
浅谈JS原生Ajax,GET和POST
2016/06/08 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
移动端js图片查看器
2016/11/17 Javascript
js脚本编写简单刷票投票系统
2017/06/27 Javascript
小程序测试后台服务的方法(ngrok)
2019/03/08 Javascript
[04:37]DOTA2英雄梦之声Vol20发条
2014/06/20 DOTA
[03:13]DOTA2-DPC中国联赛1月25日Recap集锦
2021/03/11 DOTA
完美解决Python 2.7不能正常使用pip install的问题
2018/06/12 Python
python实现决策树分类(2)
2018/08/30 Python
对Python使用mfcc的两种方式详解
2019/01/09 Python
python利用跳板机ssh远程连接redis的方法
2019/02/19 Python
python等待10秒执行下一命令的方法
2020/07/19 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
HR喜欢的自荐信格式
2013/10/08 职场文书
个人实用简单的自我评价
2013/10/19 职场文书
商务英语专业毕业生自荐信
2013/11/05 职场文书
新学期红领巾广播稿
2014/01/14 职场文书
高二美术教学反思
2014/01/14 职场文书
九年级英语教学反思
2014/01/31 职场文书
优秀辅导员事迹材料
2014/02/16 职场文书
党员民主生活会材料
2014/12/15 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书
自定义函数实现单词排序并运用于PostgreSQL(实现代码)
2021/04/22 PostgreSQL
mybatis中sql语句CDATA标签的用法说明
2021/06/30 Java/Android
HTML5页面打开微信小程序功能实现
2022/09/23 HTML / CSS