Python3 矩阵求最简行阶梯矩阵

article/2025/9/16 19:00:04

由于在Python numpy库中没有直接对Matrix求RREF的方法,度娘了好久发现在另一个科学计算包sympy中可以利用A.rref()的方法对Matrix直接求RREF,但是有另一个问题,大家一般常用的是numpy,而sympy和numpy使用的是不同的数据类型,numpy中声明Matrix一般使用array(),sympy中声明Matrix则使用Matrix()方法,所以需要先将array()类型的矩阵转换为Matrix()类型求RREF,然后再转回array()类型。

1. sympy Matrix类型与numpy array类型的相互转换

  • array -> Matrix

直接使用sympy Matrix(np.array())方法构造一个matrix

 

  • Matrix -> array

查看了sympy官方文档其提供了两种Matrix convert to array的方法:

(1) sympy.matrices.dense.matrix2numpy(m, dtyp=<'class object'>)

- 其对于sympy Matrix类型返回一个numpy array类型

这里要注意的是不能忘了数据转换的对象类型type,如果没有指定类型那么会出现“未定义数据类型”的提示

(2) tolist()

- 其对于sympy Matrix类型返回一个嵌套的python列表

使用这种方法需要注意的是,若不加处理直接使用tolist()方法,其返回的数据类似于“列表的索引”,在Spyder中查看数据是这样的:

所以需要对数据进行处理,即通过np.array(Matrix.tolist()).astype()操作将其转换为对应的numpy类型

 

2. 使用sympy库计算Matrix的最简行阶梯矩阵

sympy库中提供了rref()方法将Matrix通过初等行变换,转化为简化行阶梯矩阵。rref()将返回的是一个元组,包括两个值,第一个是简化行阶梯矩阵,第二个是主元位置的列表。注意:返回的元组第一个类型是Matrix,第二个是list

 

所以对于numpy array()的matrix求最简行阶梯矩阵,先转为symbol Matrix计算rref,再转回numpy类型

 

代码实现

# Python 3.7
from sympy import Matrix
from sympy.matrices import dense# Matrix convert to array
A_mat = Matrix([[1, 2, 1, 1], [2, 1, -2, -2], [1, -1, -4, 3]])
A_arr1 = np.array(A_mat.tolist()).astype(np.int32)
A_arr2 = dense.matrix2numpy(A_mat, dtype=np.int32) # array convert to Matrix
B_arr = np.array([[1, 2, 1, 1], [2, 1, -2, -2], [1, -1, -4, 3]])
B_mat = Matrix(B_arr)# RREF
A_rref = np.array(A.rref()[0].tolist()).astype(np.int32)
B_rref = (Matrix(B_arr).rref()[0].tolist()).astype(np.int32)

参考博文:https://oomake.com/question/4856144


http://chatgpt.dhexx.cn/article/l4XLwnrt.shtml

相关文章

用c语言将一般矩阵化为简化阶梯型

&#xff08;完整的程序附在文末&#xff09; 1、问题描述&#xff1a; 用C/C设计一个算法&#xff0c;把矩阵M化为行最简形梯形矩阵A。矩阵A应该满足以下几个条件&#xff1a; 1)若有零行&#xff0c;则零行应在最下方; 2)非零首元&#xff08;即非零行的第一个不为零的元素&a…

矩阵的行简化阶梯型和标准型

矩阵的行简化阶梯型是一种很有用的与原矩阵等价的矩阵&#xff0c;包括有相同的秩,相同的零空间,以及可以用来求解线性方程组 1 阶梯型矩阵和行简化阶梯型矩阵 下面以上节的方程组开始做初等变换: 由方程组得到增广矩阵 &#xff1a; B 下边对B进行初等变换&#xff1a; B…

阶梯形矩阵(Echelon Matrix)

初等矩阵 定义&#xff1a;与单位矩阵只有微小差别的矩阵。具体来说&#xff0c;就是一个单位矩阵经过一次初等行变换或一次初等列变换后得到的矩阵。 初等变换有下面三种形式&#xff1a; 1&#xff0c;两行&#xff08;列&#xff09;互换 2&#xff0c;把某行&#xff08;…

如何将一个矩阵化为行阶梯形矩阵

2016-03-29 尾巴 线性代数 有同学反映上一课过于冷冰冰&#xff0c;都是一些不带证明的公式。如果线性代数所有公式都要证明的话&#xff0c;线性代数的难度会上好几个量级&#xff0c;有的公式的证明是特别特别难的。还有一个&#xff0c;虽然我们需要大家能对这门课有一些直观…

《线性代数》学习之———第一章 矩阵与方程组(1.2行阶梯形)

1.2行阶梯形矩阵 行阶梯形矩阵相关理论主要的应用还是针对矩阵的不同情况进行化简&#xff0c;因为有些矩阵在化简过程中会出现&#xff0c;系数矩阵的相关行等于0但是对应的增广矩阵相关行不等于0&#xff0c;使出现了违反常理的0实数的情况。 因此&#xff0c;就需要行阶梯形…

修改电脑网段

因为需要远程连接&#xff0c;把自己电脑网段修改一下。 控制面板-网络和Internet-网络连接“右键”-属性-IPv4-自行修改

OpenWrt修改IP网段

修改LAN的IP配置网段 修改此处即可

局域网同一个网段通信过程

局域网内同网段通信的过程 这个时候就需要用到ENSP模拟器了&#xff0c;之前已经安装好了&#xff0c;我们通过ENSP来搭建实验环境&#xff0c;这样可以看到实验的效果以及通过抓包来分享整个过程&#xff0c;先看同网段内的通信过程。 1、准备工作 2、开始测试 我们先用PC1访…

linux 跨网段ping,Linux中跨网段ping问题

问题是这样的&#xff0c;如图&#xff0c;pc的ip是192.168.1.2&#xff0c;设备是linux内核2.6.35&#xff0c;有两个网卡&#xff0c;一个是带外管理口192.168.1.1 一个是192.168.2.1。pc与设备的带外口也就是192.168.1.1相连 将pc的gateway设置为192.168.1.1 pc ping 192.16…

修改docker ip网段

一 问题描述 用docker方式安装完archery后&#xff0c;网络同事反馈该archery服务器的网段和现有网段冲突了&#xff0c;我在archery服务器上&#xff0c;的确发现docker自动生成了几个网卡&#xff1a; #查看docker使用的网卡 [rootArchery ~]# docker network ls NETWORK I…

批量ping网段

ping命令是我们检查网络中最常用的命令&#xff0c;一般常见的场景是去ping一个地址或三四个地址&#xff0c;三四个地址时分别去ping即可&#xff0c;如果碰到50个地址100地址甚至一整段地址&#xff0c;再去一个一个的ping就很麻烦了&#xff0c;我们可以使用一行命令实现批量…

linux服务器如何进入图形界面,linux进入图形界面的方法

安装有图形界面的情况下&#xff0c;启动linux在终端下输入: startx 即可进入X11的图形操作界面。 如果希望每次都自动进入xwindos。。 修改inittab文件。 vi /etc/inittab 找到id:3:initdefault:这行 按i进入编辑模式&#xff0c;将3改为5。 按esc退出编辑。 输入 &#xff1a…

Ubuntu安装图形界面

一、前言 今天更换阿里云操作系统&#xff0c;发现更换的Ubuntu操作系统没有图形界面&#xff0c;在这总结一下Ubuntu安装图形界面的方法&#xff01; 二、安装图形界面 1、依次执行如下命令行 sudo apt-get update sudo apt-get upgrade -y sudo apt-get install tasksel -…

c语言 图形界面 入门,C语言是怎么实现图形界面的?

GTK就可以,一个基于C语言的免费、开源、跨平台图形工具包,可以直接使用C语言调用实现图形界面开发,下面我简单介绍一下这个工具包的安装和使用,这里以Windows平台为例: 1.首先,下载GTK安装包,这个可以直接到CSDN上下载,一个zip压缩包,直接解压就行,地址https://downl…

wsl使用图形界面

WSL图形界面优势 为wsl安装图形界面之后&#xff0c;就像拥有一台新电脑一样。 wsl安装完毕后&#xff0c;与wsl子系统交互的方法只有shell&#xff0c;具有一些弊端&#xff1a; 1.学习难度大&#xff0c;交互式编程循环结构难以加入。 2.不支持GUI&#xff0c;对数据可视…

Git 图形界面

Git 图形界面的操作方式 我们可以通过 gitk 和 git-gui 2种方式进行图形化界面的操作。官网介绍比较笼统&#xff0c;我这里通过详细操作让您快速上手 git 图形界面。 gitk 进入我们的git仓库然后执行gitk即可 具体操作方式如下&#xff1a; 在git仓库目录右键点击Git Bash …

arch linux界面,ArchLinux图形界面安装

8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 说明 ArchLinux的wiki十分的强大,但是鉴于网上大多用户的安装教程十分的杂乱,就是把所有都装上,然后看见桌面出来了,就以为装好了,实际上没有理解或者认真阅读Arch wiki,我写这篇仅仅是为了记录…

centos 7 启动与切换图形界面

安装图形界面 默认情况下是不会安装图形界面的&#xff0c;所以需要自己手动安装&#xff0c;步骤如下&#xff1a; 开启系统&#xff0c;以root身份进入 安装X(X Window System)&#xff0c;命令如下&#xff1a; yum groupinstall "X Window System"其中大约有20…

GUI图形界面编程基础知识

文章目录 一、GDI概述二、OpenGL三、什么是DirectX?四、GDI与OpenGL与DirectX之间的区别五、显卡驱动1.显卡概述2.显卡工作原理 六、C图形化GUI开发框架1.MFC介绍1) API2) SDK3) 控制台程序4) GUI程序5) MFC程序6) 字符编码&#xff1a;Unicode和多字节 2.Qt是什么&#xff1f…

推荐给大学生的几个图形界面方案

现在计算机专业的大学生&#xff0c;经常要打各种软件设计比赛或者实验&#xff0c;而凡是参与比赛就会要求写个图形界面。但是&#xff0c;怎么写一个图形界面&#xff0c;在学校的课上基本不会讲&#xff01;因此&#xff0c;我在这里列出几个好用的图形界面方案&#xff0c;…