python 编程求矩阵运算及求多元一次方程

2023-10-17 00:50

本文主要是介绍python 编程求矩阵运算及求多元一次方程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 一、python 矩阵操作
  • 二、python 矩阵乘法
  • 三、python 矩阵转置
  • 四、python 求方阵的迹
  • 五、python 方阵的行列式计算方法
  • 六、python 求逆矩阵 / 伴随矩阵
  • 七、python 解多元一次方程

本文内容:使用 jupyter 编写 python 代码对矩阵进行基本运算。

一、python 矩阵操作

  • 先引入 numpy ,以后的教程中,我们都引用 np 作为简写。
  • 使用 mat 函数创建一个 2×3 矩阵。
#引入numpy
import numpy as np
#使用mat函数创建一个2×3矩阵
a=np.mat([[1,2,3],[4,5,6]])
a

在这里插入图片描述

  • 使用 shape 可以获取矩阵的大小。
#使用shape可以获取矩阵的大小
a.shape

在这里插入图片描述

  • 使用下表读取矩阵中的元素
#使用下标读取矩阵中的元素
a.T

在这里插入图片描述

  • 进行行列转换。
#进行行列转换
a.transpose()a.T

在这里插入图片描述

  • 实际上官方文档建议我们使用二维数组代替矩阵来进行矩阵运算;因为二维数组用得较多,而且基本可取代矩阵。
#用二维数组代替矩阵
b=np.array([[1,2,3],[4,5,6]])
bb.T

在这里插入图片描述

  • 加减法也是一样的。
#加减法
a+ab+b

在这里插入图片描述

  • 当然列表是不能这么尽兴加减的。
#列表不能尽兴加减
c=[[1,2,3],[4,5,6]]
c+c

在这里插入图片描述

二、python 矩阵乘法

  • 使用二维数组创建两个矩阵 A 和 B。
#使用二维数组创建两个矩阵AB
A=np.array([[1,2,3],[4,5,6]])
B=A.TAB

在这里插入图片描述

  • 先来一个矩阵的数乘,其实是矩阵的每一个元素乘以该数。
#矩阵每个元素乘以该数
2*A2*B

在这里插入图片描述

  • dot 函数用于矩阵乘法,对于二维数组,它计算的是矩阵乘积,对于一维数组,它计算的是内积。
A*Bnp.dot(A,B)np.dot(B,A)

在这里插入图片描述

  • 再创建一个二维数组
#创建一个二维数组
C=np.array([[1,2],[1,3]])
C

在这里插入图片描述

  • 我们验证一个矩阵乘法的结合性:(AB)C=A(BC)。
#验证矩阵乘法的结合性 (AB)C=A(BC)
np.dot(np.dot(A,B),C)np.dot(A,np.dot(B,C))

在这里插入图片描述

  • 接着看一下对加法的分配性:(A+B)C=AC+BC、C(A+B)=CA+CB。
#验证加法的分配性 (A+B)C=AC+BC  C(A+B)=CA+CB
D=B-1
Dnp.dot(A,B+D)np.dot(A,B)+np.dot(A,D)

在这里插入图片描述

  • 数乘的结合性,也是一样的。
#验证数乘的结合性
2*(np.dot(A,B))np.dot(A,2*B)np.dot(2*A,B)np.dot(A,2*B)

在这里插入图片描述

  • 接着我们用到一个新知识,使用 eye 创建一个单位矩阵。
#使用 eye 创建一个单位矩阵
I=np.eye(3)
I

在这里插入图片描述

  • 一个矩阵 A 乘以一个单位矩阵,还是它本身。
#矩阵 A 乘以一个单位矩阵
np.dot(A,I)

在这里插入图片描述

三、python 矩阵转置

  • 先创建一个矩阵 A(前面已经创建过了)。
A

在这里插入图片描述

  • 我们使用属性 T 来得到矩阵 A 的转置矩阵
A.T

在这里插入图片描述

  • 验证第一个性质:(A’)’=A。
A.T.T

在这里插入图片描述

  • 创建两个尺寸相同的矩阵(前面已经创建过了)。
BD

在这里插入图片描述

  • 验证矩阵转置的第二个性质:(A±B)’=A’±B’。
(B+D).TB.T+D.T

在这里插入图片描述

  • 验证矩阵转置的第三个性质:(KA)’=KA’
10*A.T(10*A).T

在这里插入图片描述

  • 验证矩阵转置的第四个性质:(A×B)’=B’×A’
np.dot(A.T,B.T)np.dot(B.T,A.T)

在这里插入图片描述

四、python 求方阵的迹

  • 方阵的迹就是主对角元素之和。
  • 创建一个方阵(行数等于列数的矩阵)。
E=np.array([[1,2,3],[4,5,6],[7,8,9]])
E

在这里插入图片描述

  • 用 trace 计算方阵的迹。
np.trace(E)

在这里插入图片描述

  • 再创建一个方阵 F。
F=E-2
F

在这里插入图片描述

  • 验证一下方阵的迹等于方阵的转置的迹。
np.trace(E)np.trace(E.T)

在这里插入图片描述

  • 验证一下方阵的乘积的迹。
np.trace(np.dot(E,F))np.trace(np.dot(F,E))

在这里插入图片描述

  • 验证一下方阵的和的迹等于方阵的迹的和。
np.trace(E+F)np.trace(E)+np.trace(F)

在这里插入图片描述

五、python 方阵的行列式计算方法

  • 如何计算方阵的行列式,用到的是 numpy 模块的 linalg.det 方法。
  • 行列式计算方法:
    在这里插入图片描述
    在这里插入图片描述
  • 创建两个方阵(上面已经创建过了)。
EF

在这里插入图片描述

  • 使用 det 方法求得方阵 E 和方阵 F 的行列式。
np.linalg.det(E)np.linalg.det(F)

在这里插入图片描述

Cnp.linalg.det(C)

在这里插入图片描述

六、python 求逆矩阵 / 伴随矩阵

  • 设 A 是数域上的一个 n 阶方阵,若在相同数域上存在另一个 n 阶矩阵 B,使得:AB=BA=E,则我们称 B 是 A 的逆矩阵,而 A 则被称为可逆矩阵,当矩阵 A 的行列式 |A| 不等于 0 时才存在可逆矩阵。
    在这里插入图片描述
  • 创建一个方阵。
A=np.array([[1,-2,1],[0,2,-1],[1,1,-2]])
A

在这里插入图片描述

  • 使用 linalg.det 求得方阵的行列式。
A_abs=np.linalg.det(A)
A_abs

在这里插入图片描述

  • 使用 linalg.inv 求得方阵 A 的逆矩阵。
B=np.linalg.inv(A)
B

在这里插入图片描述

  • 接着我们利用公式: A − 1 = A ′ ′ / ∣ A ∣ A^{-1}=A''/|A| A1=A/A ——> A ′ ′ = A − 1 ∣ A ∣ A''=A^{-1}|A| A=A1A 来计算。
A_bansui=B*A_abs
A_bansui

在这里插入图片描述

七、python 解多元一次方程

  • 用 python 的 numpy 包中的 linalg.solve() 方法解多元一次方程。
  • 首先看一下我们要解的方程,将这个方程格式调整好,按照 x-y-z-常数项的顺序排列:
    x + 2 y + z = 7 2 x − y + 3 z = 7 3 x + y + 2 z = 18 x+2y+z=7\\ 2x-y+3z=7\\ 3x+y+2z=18 x+2y+z=72xy+3z=73x+y+2z=18
  • 将未知数的系数写下来,排列成一个矩阵 a ,如下:
a=[[1,2,1],[2,-1,3],[3,1,2]]
a=np.array(a)
a

在这里插入图片描述

  • 常数项构成一个一维数组(向量)。
b=[7,7,18]
b=np.array(b)
b

在这里插入图片描述

  • 使用linalg.solve 方法解方程,参数 a 指的是系数矩阵,参数 b 指的是常数项矩阵。
x=np.linalg.solve(a,b)
x

在这里插入图片描述

  • 使用点乘的方法可以验证一下,系数乘以未知数可以得到常数项。
np.dot(a,x)

在这里插入图片描述

这篇关于python 编程求矩阵运算及求多元一次方程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/221844

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

uva 575 Skew Binary(位运算)

求第一个以(2^(k+1)-1)为进制的数。 数据不大,可以直接搞。 代码: #include <stdio.h>#include <string.h>const int maxn = 100 + 5;int main(){char num[maxn];while (scanf("%s", num) == 1){if (num[0] == '0')break;int len =

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该

hdu 4565 推倒公式+矩阵快速幂

题意 求下式的值: Sn=⌈ (a+b√)n⌉%m S_n = \lceil\ (a + \sqrt{b}) ^ n \rceil\% m 其中: 0<a,m<215 0< a, m < 2^{15} 0<b,n<231 0 < b, n < 2^{31} (a−1)2<b<a2 (a-1)^2< b < a^2 解析 令: An=(a+b√)n A_n = (a +

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip