用 python 解决线性代数中的矩阵运算

  • 矩阵叉乘
  • 矩阵求逆
  • 矩阵转置
  • 假定AX=B,求解未知矩阵X
  • 矩阵的行列式值|matrix|
  • 未完待续。。。。。
import sys
from PyQt5.QtWidgets import *
import numpy as np class Form(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
grid = QGridLayout() self.setWindowTitle("矩阵行列式计算器") self.Title = QLabel("矩阵行列式计算器")
grid.addWidget(self.Title, 0, 1)
self.Title = QLabel("作者:小潘")
grid.addWidget(self.Title, 0, 2)
titles = ['计算两矩阵叉乘', '矩阵求逆', '矩阵转置', '假定AX=B,求解未知矩阵X', '求矩阵的行列式值', '清空']
func = [self.multiplication_cross, self.cal_inverse, self.cal_transposition, self.solve_equations, self.cal_value, self.clear]
for index, title in enumerate(titles):
self.set_button(title, 1, index, grid, func[index]) self.textTitle1 = QLabel("第一个矩阵的行数:")
grid.addWidget(self.textTitle1, 3, 0)
self.hang1 = QLineEdit(self)
grid.addWidget(self.hang1, 3, 1)
self.textTitle1 = QLabel("第一个矩阵的列数:")
grid.addWidget(self.textTitle1, 3, 2)
self.lie1 = QLineEdit(self)
grid.addWidget(self.lie1, 3, 3)
self.texts1 = [self.set_text(i, 4, grid) for i in range(36)] self.textTitle2 = QLabel("第二个矩阵的行数:")
grid.addWidget(self.textTitle2, 10, 0)
self.hang2 = QLineEdit(self)
grid.addWidget(self.hang2, 10, 1)
self.textTitle2 = QLabel("第二个矩阵的列数:")
grid.addWidget(self.textTitle2, 10, 2)
self.lie2 = QLineEdit(self)
grid.addWidget(self.lie2, 10, 3)
self.texts2 = [self.set_text(i, 11, grid) for i in range(36)]
self.setLayout(grid) def set_button(self, title, x, y, grid, cal):
bt = QPushButton(title)
bt.setParent(self)
grid.addWidget(bt, x, y)
bt.clicked.connect(cal) def set_text(self, i, y, grid):
text = QLineEdit(self)
grid.addWidget(text, y + i // 6, 0 + i % 6)
return text def clear(self):
self.hang1.setText('')
self.lie1.setText('')
self.hang2.setText('')
self.lie2.setText('')
for i in range(36):
self.texts1[i].setText('')
self.texts2[i].setText('') def get_matrix(self):
hang1 = int(self.hang1.text() if self.hang1.text() != '' else 0)
lie1 = int(self.lie1.text() if self.lie1.text() != '' else 0)
hang2 = int(self.hang2.text() if self.hang2.text() != '' else 0)
lie2 = int(self.lie2.text() if self.lie2.text() != '' else 0)
# , lie1, hang2, lie2 = , int(self.lie1.text()), int(self.hang2.text()), int(self.lie2.text())
matrix1, matrix2 = [[] for i in range(hang1)], [[] for i in range(hang2)]
for i in range(hang1):
for j in range(lie1):
matrix1[i].append(eval(self.texts1[i*6+j].text()))
for i in range(hang2):
for j in range(lie2):
matrix2[i].append(eval(self.texts2[i*6+j].text()))
return matrix1, matrix2 '''
description: 矩阵叉乘 matrix1 左乘 matrix2
param {matrix1, matrix2} 多维数组
return {matrix} 叉乘后的矩阵
Date Changed:
'''
def multiplication_cross(self):
matrix1, matrix2 = self.get_matrix()
pass
a, b = np.mat(matrix1), np.mat(matrix2)
print('叉乘后的矩阵的矩阵为:')
print(a * b)
'''
description: 矩阵求逆
param {matrix} 多维数组
return {matrix} 逆矩阵
Date Changed:
'''
def cal_inverse(self, matrix):
matrix1, matrix2 = self.get_matrix()
print('逆矩阵为:')
print(np.mat(matrix1).I) '''
description: 矩阵转置
param {matrix} 多维数组
return {matrix} 转置矩阵
Date Changed:
'''
def cal_transposition(self, matrix):
matrix1, matrix2 = self.get_matrix()
print('转置矩阵为:')
print(np.mat(matrix1).T) '''
description: 假定AX=B,求解未知矩阵X
param {A, B} 多维数组
return {X} 矩阵X
Date Changed:
'''
def solve_equations (self):
A, B = self.get_matrix()
print('解得X矩阵为:')
print(np.linalg.solve(A, B)) '''
description: 矩阵的行列式值|matrix|
param {matrix} 多维数组
return {number} 矩阵的行列式值
Date Changed:
'''
def cal_value(self, matrix):
matrix1, matrix2 = self.get_matrix()
print('矩阵行列式的值为:')
print(np.linalg.det(matrix1)) if __name__ == '__main__':
# 每一个PyQt5程序都需要有一个QApplication对象。sys.argv是从命令行传入的参数列表。Python脚本可以从shell中运行。这是一种通过参数来选择启动脚本的方式。
app = QApplication(sys.argv)
# 创建一个 Form 对象
form = Form()
# 将控件展示出来
form.show()
#退出中使用的消息循环,结束消息循环时就退出程序
app.exec_()

用 python 解决线性代数中的矩阵运算的更多相关文章

  1. 利用Python的三元表达式解决Odoo中工资条中城镇、农村保险的问题

    Python中没有像C#中有三元表达式 A?B:C 但在python中可以通过 A if condition else B 的方式来达到同样的效果. 例如 : 1 if True else 0 输出 ...

  2. python中的矩阵运算

    摘自:http://m.blog.csdn.net/blog/taxueguilai1992/46581861 python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入nu ...

  3. inotify+rsync实现实时同步(附解决crontab中无法执行python脚本的问题)

    1.准备环境 # 系统支持的话,下面的目录就会存在 ls /proc/sys/fs/inotify/ rpm -qa inotify-tools yum -y install inotify-tool ...

  4. 解决python写入mysql中datetime类型遇到的问题

    解决python写入mysql中datetime类型遇到的问题 刚开始使用python,还不太熟练,遇到一个datetime数据类型的问题: 在mysql数据库中,有一个datetime类型的字段用于 ...

  5. python中numpy矩阵运算操作大全(非常全)!

    python中numpy矩阵运算操作大全(非常全) //2019.07.10晚python矩阵运算大全1.矩阵的输出形式:对于任何一个矩阵,python输出的模板是:import numpy as n ...

  6. 在学习python的过程中,遇到的最大的困难是什么?

    本人文科生,回顾自己近 2 年的Python 自学经历,有一些学习心得和避坑经验分享给大家,让大家在学习 Python 的过程中少走一些弯路!减少遇到不必要的学习困难! 首先,最开始最大的困难应该就是 ...

  7. 用python在excel中读取与生成随机数写入excel中

    今天是我第一次发博客,就关于python在excel中的应用作为我的第一篇吧. 具体要求是:在一份已知的excel表格中读取学生的学号与姓名,再将这些数据放到新的excel表中的第一列与第二列,最后再 ...

  8. [python] 2、python使用pyaudio进行录音,及其在python虚拟环境virtualenv中安装遇到的问题

    1.pyaudio安装大背景 最近在做智能音箱,需要编写声音拾取代码,我先是百度两篇比较常见的用python进行录音的操作的文章: python写一个录音小程序:http://blog.csdn.ne ...

  9. python解决四舍五入问题

    小数问题是计算机编程中大部分语言都会遇到的问题,尤其是在内容中涉及到评分.金额计算等等,本人一般在解决需求中固定小数位的数字计算时,都会先将其放大整10的倍数至整数,然后计算.存储,只有在显示的时候再 ...

随机推荐

  1. 深度理解JVM

      1. 环境搭建 安装jdk 2. 内存溢出场景模拟 public class Test01 { public static void main(String[] args) { //测试内存溢出 ...

  2. AVS 端能力之蓝牙模块

    该类为蓝牙端能力处理类,主要负责蓝牙设备配对和蓝牙音频播放功能. 功能简介 实现蓝牙设备的启动发现模式.扫描蓝牙设备.建立蓝牙连接功能 实现蓝牙设备音频播放.停止.上一首.下一首功能 其它细节参考&l ...

  3. Markdown 编写技巧汇总(一)

    编写文档,有很多格式选择,也有不同平台选择.下面就自己接触到的MarkDown编写文档的各种技巧做简单梳理,供自己参阅,也希望帮到网友. [1]添加空格 ①   这种写法比较老土,但是,很实用!注意都 ...

  4. 数据库InnoDB和MyISAMYSQL的区别

    1.nnoDB支持事务,MyISAM不支持,这一点是非常之重要.事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而MyISAM就不可以了. 2.MyISAM适合查询以及插入为主 ...

  5. asp.net core使用identity+jwt保护你的webapi(二)——获取jwt token

    前言 上一篇已经介绍了identity在web api中的基本配置,本篇来完成用户的注册,登录,获取jwt token. 开始 开始之前先配置一下jwt相关服务. 配置JWT 首先NuGet安装包: ...

  6. mysql增删改查——条件查询+模糊查询

    条件查询一般是 = 等于 >大于 <小于 >=大于等于 <=小于等于 <>区间 between and区间 or并且 and或者 in包含 like模糊查询 实例, ...

  7. 15-ThreadLocalRandom类剖析

    ThraedLocalRandom类是JDK7在JUC包下新增的随机数生成器,它弥补了Random类在多线程下的缺陷. Random类及其缺陷 下面看一下java.util.Random的使用方法. ...

  8. Hive架构及搭建方式

    目录 前言 hive的基础知识 基本架构 metastore 内嵌服务和数据库 内嵌服务 服务和数据库单独部署 hcatalog 客户端 客户端的本地模式 beeline beeline的自动模式 j ...

  9. Mybatis 动态Sql练习

    建表 CREATE TABLE `student` ( `s_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT ...

  10. java中this关键字总结

    1.this是一个引用,也是一个变量,存储在JVM堆内存的Java对象内部. 2.this变量中保存的内存地址指向自身. 3.this可以在实例方法中使用,this指向当前正在执行这个动作的对象(th ...