线性代数基础2矩阵

矩阵是什么
矩阵就是二维数组,下面是一个 m 乘 n 的矩阵,它有 m 行,n 列,每行每列上面都有元素,每个元素都有行标i 和列标 j, a ij 。简称m × n矩阵,记作:
在这里插入图片描述
注意a11的索引是 A[0,0]。
这 m×n 个数称为矩阵 A 的元素,简称为元,数aij
位于矩阵 A 的第 i 行第 j 列,称为矩阵 A 的 (i,j) 元,m×n 矩阵 A 也记作 A mn 。

常见矩阵
方阵
如果 m 等于 n,那就称为方阵
在这里插入图片描述
对称矩阵
定义是 a ij 等于 a ji 那么就是对称矩阵,对称矩阵首先是个方阵
在这里插入图片描述
单位矩阵
主对角线都是 1,其它位置是 0,这称之为单位矩阵,单位矩阵写为 I,一定是方阵,等同于数字里面的 1。
在这里插入图片描述
对角矩阵
对角矩阵,就是主对角线非 0,其它位置是 0。
对角矩阵一定是方阵。不然没有对角线!

矩阵运算
矩阵加减法
矩阵的加法就是矩阵的对应位置相加,减法也是一样就是对应位置相减。
在这里插入图片描述
数乘在这里插入图片描述
矩阵乘法
矩阵的乘法和一般的乘法是不太一样!
它是把第一个矩阵的每一行,和第二个矩阵的每一列拿过来做内积得到结果。
在这里插入图片描述
在这里插入图片描述
矩阵乘法运算结果
在这里插入图片描述
矩阵转置
转置的操作和向量是一样的,就是把 a ij变成 a ji ,把行和列互换一下
在这里插入图片描述
矩阵运算法则
矩阵加减法
满足:分配律、结合律、交换律
在这里插入图片描述
矩阵乘法
满足结合律在这里插入图片描述
满足分配律在这里插入图片描述
不满足交换律:不一定相等,甚至 AB 的尺寸和 BA 的尺寸是不同的。
在这里插入图片描述
矩阵乘法 + 转置

在这里插入图片描述

逆矩阵
逆矩阵定义
矩阵有 AB 乘法,但是没有 A/B 这么一说,只有逆矩阵。
逆矩阵怎么定义的?
假设有个矩阵 A,注意它一定是方阵(必须是方阵),乘以矩阵 B 等于单位矩阵I:在这里插入图片描述
那么我们称这里的 B 为 A 的右逆矩阵,和左逆矩阵。

有个很重要的结论就是,如果这样的 B 存在的话,它的左逆和右逆一定相等,统称为 A 的逆矩阵 A −1 。则:A=B−1 B=A−1 (-1次方)
逆矩阵作用
矩阵求逆有什么用呢?它可以帮助我们解线性方程组,比如 XW=Y 。两边同时乘以 X 的逆:在这里插入图片描述
就可以求解出方程的系数,它发明的目的也是干这样的事情用的。
举例说明:

# 三元一次方程
# 3x + 2y + 4z = 19
# 2x -y + 3z = 9
# x + y - z = 0
import numpy as np
X = np.array([[3,2,4],[2,-1,3],[1,1,-1]])
Y = np.array([19,9,0])display(X,Y)# np.linalg.inv表示矩阵求逆
# dot表示矩阵乘法
W = np.linalg.inv(X).dot(Y)
print('求解方程得x,y,z为:',W)
'''
array([[ 3,  2,  4],[ 2, -1,  3],[ 1,  1, -1]])
array([19,  9,  0])
求解方程得x,y,z为: [1. 2. 3.]
'''

从这里我们也可以看出来单位矩阵像我们乘法里面的 1。
逆矩阵相关公式:在这里插入图片描述

伴随矩阵
伴随矩阵定义
设有一矩阵 A在这里插入图片描述
设 A ij 是矩阵A中元素 a ij 的代数余子式,那么矩阵 A ∗称为矩阵 A 的伴随矩阵
代数余子式
1、代数余子式定义在这里插入图片描述
2、代数余子式计算在这里插入图片描述
计算过程如下:在这里插入图片描述
伴随矩阵性质I,E都表示单位矩阵
伴随矩阵与逆矩阵
在这里插入图片描述
根据上式可得:在这里插入图片描述

import numpy as np
# 声明矩阵
A = np.array([[1,2,3],[2,2,1],[3,4,3]])
A_bs = [] # 伴随矩阵
n = 3 # A方阵的行、列数量
for i in range(n):for j in range(n):row = [0,1,2] # 行索引col = [0,1,2] # 列索引row.remove(i) # 去除行col.remove(j) # 去除列# 代数余子式A_ij = A[np.ix_(row,col)]A_bs.append(((-1)**(i+j)) * np.linalg.det(A_ij))
A_bs = np.array(A_bs).reshape(3,3).T
print('根据伴随矩阵求逆矩阵:\n',A_bs/np.linalg.det(A))
print('用NumPy模块求逆矩阵 :\n',np.linalg.inv(A))
'''
根据伴随矩阵求逆矩阵:[[ 1.   3.  -2. ][-1.5 -3.   2.5][ 1.   1.  -1. ]]
用NumPy模块求逆矩阵 :[[ 1.   3.  -2. ][-1.5 -3.   2.5][ 1.   1.  -1. ]]
'''

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/636322.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode:438. 找到字符串中所有字母异位词

给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。 示例 1: 输入: s "cbaebabacd", p "…

使用Python爬取易车网汽车信息(含x-sign参数逆向分析)

文章目录 1. 写在前面2. 接口分析3. 断点分析3. 算法还原 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致…

Java如何实现List的反转

hi,我是程序员王也,一个资深Java开发工程师,平时十分热衷于技术副业变现和各种搞钱项目的程序员~,如果你也是,可以一起交流交流。 今天我们来聊聊Java中实现List反转~ List反转的基本概念 在Java中,反转一…

RK3568 学习笔记 : u-boot 通过 tftp 网络更新 u-boot自身

前言 开发板型号: 【正点原子】 的 RK3568 开发板 AtomPi-CA1 使用 虚拟机 ubuntu 20.04 收到单独 编译 RK3568 u-boot 使用 rockchip Linux 内核的设备树 【替换】 u-boot 下的 rk3568 开发板设备树文件,解决 u-boot 下千兆网卡设备能识别但是无法 Pi…

B树(B-tree)

B树(B-tree) B树(B-tree)是一种自平衡的多路查找树,主要用于磁盘或其他直接存取的辅助存储设备 B树能够保持数据有序,并允许在对数时间内完成查找、插入及删除等操作 这种数据结构常被应用在数据库和文件系统的实现上 B树的特点包括: B树为…

AD设置覆铜与板子边缘间隔

1、设置板子边缘与覆铜间隔原因 在单个制板或者批量制板时,有时由于机器切割不稳定,造成切到覆铜,板子容易不稳定。为了保证机器切割不切到覆铜,我们可以设置覆铜到板子边缘的间隔。 2、设置方式 打开Design--->Rules&#…

pycharm创建的项目

pycharm生成django templates删出 settings.py

Vue 指令、计算属性、侦听器

目录 指令 指令修饰符 按键修饰符 ​编辑 v-model修饰符 事件修饰符 v-bind对于样式操作的增强 操作class 对象 数组 操作style v-model应用于其他表单元素 computed计算属性 概念 基础语法 ​编辑 计算属性vs方法 computed计算属性 作用 语法 缓存特性 m…

Java Web 网页设计

不要让追求之舟停泊在幻想的港湾 而应扬起奋斗的风帆 驶向现实生活的大海 网页设计 1.首先 添加框架支持 找到目录右键添加 找到Web Application选中 点击OK 然后 编辑设置 找到Tomcat--local 选中 点击OK 名称可以自己设置 找到对应文件夹路径 把Tomcat添加到项目里面 因为…

一次Redis访问超时的“捉虫”之旅

01 引言 作为后端开发人员,对Redis肯定不陌生,它是一款基于内存的数据库,读写速度非常快。在爱奇艺海外后端的项目中,我们也广泛使用Redis,主要用于缓存、消息队列和分布式锁等场景。最近在对一个老项目使用的docker镜…

Java——数组

数组是一块连续的内存,用来存储相同类型的数据 一、数组的定义 数组的创建 T[] 数组名 new T[N]; T:表示数组中存放元素的类型 T[]:表示数组的类型 N:表示数组的长度 数组的初始化 数组的初始化主要分为动态初始化和静态初始…

链表基础4——带头双向循环链表

什么是带头双向循环链表 我们直接看图片 定义结点类型 typedef int LTDataType;//存储的数据类型typedef struct ListNode {LTDataType data;//数据域struct ListNode* prev;//前驱指针struct ListNode* next;//后继指针 }ListNode;链表的初始化 //创建一个新结点 ListNod…