矩阵是否相等

A A A B B B为同型矩阵且对应位置的各个元素相同, 则称矩阵 A A A B B B相等
在Numpy中, 可以根据np.allclose()来判断

import numpy as npA = np.random.rand(4, 4)  # 生成一个随机 n x n 矩阵B = A + A.Tprint("矩阵是否相等:", np.allclose(A, A))
print("矩阵是否相等(对称矩阵):", np.allclose(B, B.T))"""output:
矩阵是否相等: True
矩阵是否相等(对称矩阵): True
"""

矩阵加减法运算(同型矩阵)

只有同型矩阵才可以做加减法运算, 比如 A = ( a i j ) , B = ( b i j ) A=(a_{ij}), B=(b_{ij}) A=(aij),B=(bij)
A ± B = [ a 11 ± b 11 a 12 ± b 12 ⋯ a 1 n + b 1 n a 21 ± b 21 a 22 ± b 22 ⋯ a 2 n + b 2 n ⋮ ⋮ ⋮ a m 1 ± b m 1 a m 2 ± b m 2 ⋯ a m n + b m n ] A \pm B = \left[\begin{matrix} a_{11} \pm b_{11} & a_{12} \pm b_{12} & \cdots & a_{1n}+b_{1n} \\ a_{21} \pm b_{21} & a_{22} \pm b_{22} & \cdots & a_{2n}+b_{2n} \\ \vdots & \vdots & & \vdots \\ a_{m1} \pm b_{m1} & a_{m2} \pm b_{m2} & \cdots & a_{mn}+b_{mn} \\ \end{matrix}\right] A±B= a11±b11a21±b21am1±bm1a12±b12a22±b22am2±bm2a1n+b1na2n+b2namn+bmn

import numpy as npA = np.random.rand(4, 4)  # 生成一个随机 n x n 矩阵
B = np.random.rand(4, 4)  # 生成一个随机 n x n 矩阵print("矩阵相加 A + B:\n", A + B)"""output:
矩阵相加 A + B:[[1.85565417 1.19897263 1.43074501 1.08090302][0.73575223 0.55719962 1.07948313 0.88540198][0.54137775 0.93516805 1.34874669 1.27058512][0.71528085 0.42096502 0.78680364 0.49563923]]
"""

矩阵的数乘运算

设数 λ \lambda λ和矩阵 A A A的乘积记做 λ A \lambda A λA A λ A \lambda Aλ
λ A = [ λ a 11 λ a 12 ⋯ λ a 1 n λ a 21 λ a 22 ⋯ λ a 2 n ⋮ ⋮ ⋮ λ a m 1 λ a m 2 ⋯ λ a m n ] m × n \lambda A = \left[\begin{matrix} \lambda a_{11} & \lambda a_{12} & \cdots & \lambda a_{1n} \\ \lambda a_{21} & \lambda a_{22} & \cdots & \lambda a_{2n} \\ \vdots & \vdots & & \vdots \\ \lambda a_{m1} & \lambda a_{m2} & \cdots & \lambda a_{mn} \\ \end{matrix}\right]_{m \times n} λA= λa11λa21λam1λa12λa22λam2λa1nλa2nλamn m×n

import numpy as npA = np.random.rand(4, 4)  # 生成一个随机 n x n 矩阵print("数乘矩阵 n * A:\n", 10 * A)"""output:
数乘矩阵 n * A:[[5.19664362 8.63302512 2.74169614 7.91261818][7.48393355 0.1544285  7.78617328 8.00967944][4.0945106  7.79687066 7.19467784 3.76012125][3.86753992 0.36831857 0.53450663 0.34417902]]
"""

矩阵的乘法(A矩阵列数=B矩阵行数)

只有第一个矩阵的列和第二个矩阵的行相等( p p p)时才可以进行乘法运算, 设矩阵 A m × p A_{m \times p} Am×p B p × n B_{p \times n} Bp×n, 称 m × n m \times n m×n阶的矩阵 C C C为矩阵 A A A B B B的乘积, 记做 C m × n = A m × p × B p × n C_{m \times n}=A_{m \times p} \times B_{p \times n} Cm×n=Am×p×Bp×n, C = A B C = AB C=AB, 计算公式如下
C i j = ∑ k = 1 p a i k b k j = a i 1 b 1 j + a i 2 b 2 j + ⋯ + a i p b p j C_{ij} = \sum^{p}_{k=1}a_{ik}b_{kj} = a_{i1}b_{1j} + a_{i2}b_{2j} + \cdots + a_{ip}b_{pj} Cij=k=1paikbkj=ai1b1j+ai2b2j++aipbpj
结果矩阵 C C C的第 i i i行与第 j j j列交叉位置的值, 等于矩阵 A A A i i i行与矩阵 B B B j j j列对应位置每个值的乘积之和
[ 1 2 3 4 5 6 ] × [ 1 2 3 4 5 6 ] = [ 1 × 1 + 2 × 3 + 3 × 5 1 × 2 + 2 × 4 + 3 × 6 4 × 1 + 5 × 3 + 6 × 5 4 × 2 + 5 × 4 + 6 × 6 ] = [ 22 28 49 64 ] \left[\begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{matrix}\right] \times \left[\begin{matrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{matrix}\right] = \left[\begin{matrix} 1 \times 1 + 2 \times 3 + 3 \times 5 & 1 \times 2 + 2 \times 4 + 3 \times 6 \\ 4 \times 1 + 5 \times 3 + 6 \times 5 & 4 \times 2 + 5 \times 4 + 6 \times 6 \\ \end{matrix}\right] = \left[\begin{matrix} 22 & 28 \\ 49 & 64 \end{matrix}\right] [142536]× 135246 =[1×1+2×3+3×54×1+5×3+6×51×2+2×4+3×64×2+5×4+6×6]=[22492864]

性质

  1. A B ≠ B A AB \ne BA AB=BA
  2. ( A B ) C = A ( B C ) (AB)C=A(BC) (AB)C=A(BC)
  3. A ( B + C ) = A B + A C A(B + C) = AB + AC A(B+C)=AB+AC
  4. ( B + C ) A = B A + C A (B + C)A = BA + CA (B+C)A=BA+CA
  5. λ A B = ( λ A ) B = A ( λ B ) \lambda AB=(\lambda A)B = A(\lambda B) λAB=(λA)B=A(λB)
import numpy as npA = np.random.random((3, 4))  # 生成一个随机 n x n 矩阵
B = np.random.random((4, 3))  # 生成一个随机 n x n 矩阵
C = np.random.random((4, 3))  # 生成一个随机 n x n 矩阵print("矩阵乘法 np.dot(A, B):\n", np.dot(A, B))
print("矩阵乘法 同型矩阵 np.multiply(B, C):\n", np.multiply(B, C))
print("矩阵乘法 同型矩阵 B * C:\n", B * C)"""output:
矩阵乘法 np.dot(A, B):[[1.21934115 0.95509204 1.07146563][0.84805456 0.80305107 1.29072162][0.7986989  0.6570242  0.98401843]]
矩阵乘法 同型矩阵 np.multiply(B, C):[[0.2603926  0.783609   0.22885359][0.21990775 0.08573665 0.66108795][0.04055929 0.02528424 0.16612946][0.20936775 0.10603932 0.52598509]]
矩阵乘法 同型矩阵 B * C:[[0.2603926  0.783609   0.22885359][0.21990775 0.08573665 0.66108795][0.04055929 0.02528424 0.16612946][0.20936775 0.10603932 0.52598509]]"""

矩阵和向量的乘法(转换向量)

矩阵和向量的乘法是机器学习中重要的操作, 其主要思想是将向量转换为可操作的矩阵然后进行乘法操作

  1. 设矩阵 A m × n A_{m \times n} Am×n n n n维列向量 X X X相乘, 可以按照矩阵和矩阵的乘法进行计算, 结果为 m m m维列向量, m × 1 m \times 1 m×1阶矩阵
import numpy as npA = np.random.random((3, 4))  # 生成一个随机 n x n 矩阵
B = np.array([[1], [2], [3], [4]])  # 向量转换为 m * 1 矩阵, 然后进行运算print("矩阵乘法 np.dot(A, B):\n", np.dot(A, B))"""output:
矩阵乘法 np.dot(A, B):[[5.503236  ][4.09746931][1.46448954]]"""
  1. m m m维行向量 X X X和矩阵 A m × n A_{m \times n} Am×n相乘, 结果为 n n n维的向量, 即 1 × n 1 \times n 1×n矩阵
import numpy as npA = np.array([[1, 2, 3]])  # 向量转换为 1 * m 矩阵, 然后进行运算
B = np.random.random((3, 4))  # 生成一个随机 n x n 矩阵print("矩阵乘法 np.dot(A, B):\n", np.dot(A, B))"""output:
矩阵乘法 np.dot(A, B):[[1.93115602 1.38665763 1.99863191 3.45882516]]
"""

矩阵的乘方(方阵)

只有方阵才能进行乘方运算, A 1 = A A^1=A A1=A, A 2 = A A A^2=AA A2=AA, A k + 1 = A k A = A A k A^{k+1}=A^kA=AA^k Ak+1=AkA=AAk, array类型和matrix类型运算方式不同
array类型运算(dot)和matrix的运算(**): 矩阵运算
A k = [ a 11 ⋯ a n 1 ⋮ ⋮ a m 1 ⋯ a m n ] k A^k = \left[\begin{matrix} a_{11} & \cdots & a_{n1} \\ \vdots & & \vdots\\ a_{m1} & \cdots & a_{mn} \end{matrix}\right]^k Ak= a11am1an1amn k

array的(**)运算: 矩阵每一项的运算
A k = [ a 11 k ⋯ a n 1 k ⋮ ⋮ a m 1 k ⋯ a m n k ] A^k = \left[\begin{matrix} a_{11}^k & \cdots & a_{n1}^k \\ \vdots & & \vdots\\ a_{m1}^k & \cdots & a_{mn}^k \end{matrix}\right] Ak= a11kam1kan1kamnk

import numpy as npA = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])  # array 乘方必须为方阵, 因为方阵结果还是方阵print("array矩阵乘方 np.dot(A, A).dot(A):\n", np.dot(A, A).dot(A))
print("array矩阵每个元素n次方:\n", A ** 3)B = np.mat(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
)
print("matrix矩阵乘方 B ** 3:\n", B ** 3)"""output:
array矩阵乘方 np.dot(A, A).dot(A):[[ 468  576  684][1062 1305 1548][1656 2034 2412]]
array矩阵每个元素n次方:[[  1   8  27][ 64 125 216][343 512 729]]
matrix矩阵乘方 B ** 3:[[ 468  576  684][1062 1305 1548][1656 2034 2412]]
"""

转置矩阵和逆矩阵

转置矩阵

矩阵 A A A的行和列互相交换所产生的矩阵称为 A A A的转置矩阵, 记做 A T A^T AT, 这个运算称为矩阵的转置运算
比如:
A = [ 1 6 10 1 − 2 9 ] , A T = [ 2 1 6 − 2 10 9 ] A = \left[\begin{matrix} 1 & 6 & 10 \\ 1 & -2 & 9 \end{matrix}\right], A^T = \left[\begin{matrix} 2 & 1 \\ 6 & -2 \\ 10 & 9 \end{matrix}\right] A=[1162109],AT= 2610129

import numpy as npA = np.array([[1, 2, 3], [4, 5, 6]])
print("矩阵的转置A.T: \n", A.T)
print("矩阵的转置A.transpose(): \n", A.transpose())"""output:
矩阵的转置A.T: [[1 4][2 5][3 6]]
矩阵的转置A.transpose(): [[1 4][2 5][3 6]]
"""
转置矩阵和对称矩阵
  1. 通过矩阵转置和判断是否为对称矩阵
  2. 通过矩阵转置和保留上三角矩阵相加可以获得对称矩阵

逆矩阵(方阵)

逆矩阵蕾丝数学中的倒数, 如果 b × a = a × b = 1 b \times a=a \times b=1 b×a=a×b=1, 则 a , b a, b a,b互为倒数, a ÷ b = a × 1 b = a × b − 1 a \div b=a \times \frac{1}{b}=a \times b^{-1} a÷b=a×b1=a×b1, 因为矩阵没有除法可以借助逆矩阵, 实现除法

逆矩阵定义
对于 n n n阶方阵, 若存在 n n n阶方阵 B B B, A B = B A = E AB=BA=E AB=BA=E, E E E为单位矩阵, 记做 B = A − 1 , A = B − 1 B=A^{-1}, A=B^{-1} B=A1,A=B1, 若 A A A可逆, 则其逆矩阵唯一

[ 1 2 2 5 ] [ 5 − 2 − 2 1 ] = [ 1 0 0 1 ] , 并且 [ 5 − 2 − 2 1 ] [ 1 2 2 5 ] = [ 1 0 0 1 ] \left[\begin{matrix} 1 & 2 \\ 2 & 5 \end{matrix}\right] \left[\begin{matrix} 5 & -2 \\ -2 & 1 \end{matrix}\right] =\left[\begin{matrix} 1 & 0 \\ 0 & 1 \end{matrix}\right], 并且 \left[\begin{matrix} 5 & -2 \\ -2 & 1 \end{matrix}\right] \left[\begin{matrix} 1 & 2 \\ 2 & 5 \end{matrix}\right] =\left[\begin{matrix} 1 & 0 \\ 0 & 1 \end{matrix}\right] [1225][5221]=[1001],并且[5221][1225]=[1001]
所以两个矩阵互为逆矩阵, 并非所有的方阵都有逆矩阵, 没有你矩阵的方阵称为奇艺矩阵或不可逆矩阵

性质

  1. ( A − 1 ) = A (A^{-1})=A (A1)=A
  2. ( A T ) − 1 = ( A − 1 ) T (A^T)^{-1}=(A^{-1})^T (AT)1=(A1)T
  3. ( λ A ) − 1 = 1 λ A − 1 , λ ≠ 0 (\lambda A)^{-1}=\frac{1}{\lambda}A^{-1}, \lambda \ne 0 (λA)1=λ1A1,λ=0
  4. ( A B ) − 1 = B − 1 A − 1 (AB)^{-1}=B^{-1}A^{-1} (AB)1=B1A1
import numpy as npA = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("方阵array的逆矩阵np.linalg.inv(A): \n", np.linalg.inv(A))
print("方阵matrix的逆矩阵np.mat(A).I: \n", np.mat(A).I)"""output:
方阵array的逆矩阵np.linalg.inv(A): [[ 3.15251974e+15 -6.30503948e+15  3.15251974e+15][-6.30503948e+15  1.26100790e+16 -6.30503948e+15][ 3.15251974e+15 -6.30503948e+15  3.15251974e+15]]
方阵matrix的逆矩阵np.mat(A).I: [[ 3.15251974e+15 -6.30503948e+15  3.15251974e+15][-6.30503948e+15  1.26100790e+16 -6.30503948e+15][ 3.15251974e+15 -6.30503948e+15  3.15251974e+15]]
"""

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

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

相关文章

网络爬虫一课一得

网页爬虫(Web Crawler)是一种自动化程序,通过模拟人类浏览行为,从互联网上抓取、解析和存储网页数据。其核心作用是高效获取并结构化网络信息,为后续分析和应用提供数据基础。以下是其详细作用和用途方向: …

MATLAB实现井字棋

一、智能决策系统与博弈游戏概述 (一)智能决策系统核心概念 智能决策系统(Intelligent Decision System, IDS)是通过数据驱动和算法模型模拟人类决策过程的计算机系统,核心目标是在复杂环境中自动生成最优策略&#…

解决el-select选择框右侧下拉箭头遮挡文字问题

如图所示&#xff1a; el-select长度较短的时候&#xff0c;选择框右侧下拉箭头会遮挡选中的数据 选中数据被遮挡 解决办法&#xff1a; 组件如下&#xff1a; <td class"fmtd" :colspan"col.ptproCupNum" v-for"col in row" :key"…

【Linux】pthread多线程同步

参考文章&#xff1a;https://blog.csdn.net/Alkaid2000/article/details/128121066 一、线程同步 线程的主要优势在于&#xff0c;能够通过全局变量来共享信息。不过&#xff0c;这种便携的共享是有代价的&#xff1b;必须确保多个线程不会同时修改同一变量&#xff0c;或者某…

Spring框架学习day7--SpringWeb学习(概念与搭建配置)

SpringWeb1.SpringWeb特点2.SpringWeb运行流程3.SpringWeb组件4.搭建项目结构图&#xff1a;4.1导入jar包4.2在Web.xml配置**4.2.1配置统一拦截分发器 DispatcherServlet**4.2.2开启SpringWeb注解&#xff08;spring.xml&#xff09; 5.处理类的搭建6.SpringWeb请求流程(自己理…

业务到解决方案构想

解决方案构想的核心理解 解决方案构想是连接业务需求与技术实现的关键桥梁&#xff0c;从您描述的内容和我的理解&#xff0c;这个阶段的核心点包括&#xff1a; 核心要点解读 转化视角&#xff1a;将业务视角的需求转变为解决方案视角 业务能力探索阶段识别了"做什么&q…

jvm学习第1day jvm简介,栈溢出、堆溢出

jvm学习第1day jvm简介&#xff0c;栈溢出、堆溢出 jvm简介栈线程安全栈溢出线程运行诊断堆堆溢出 方法区方法区内存溢出常量池和运行时常量池 jvm简介 jvm 是编译后的字节码文件运行的环境&#xff0c; 因此各个平台有了jvm可以运行java.class文件&#xff0c;这是Java跨平台…

关于神经网络中的激活函数

这篇博客主要介绍一下神经网络中的激活函数以及为什么要存在激活函数。 首先&#xff0c;我先做一个简单的类比&#xff1a;激活函数的作用就像给神经网络里的 “数字信号” 加了一个 “智能阀门”&#xff0c;让机器能学会像人类一样思考复杂问题。 没有激活i函数的神经网络…

免费无限使用GPT Plus、Claude Pro、Grok Super、Deepseek满血版

渗透智能-ShirtAI&#xff0c;可以免费无限使用GPT Plus、Claude Pro、Grok Super、Deepseek满血版、除此之外还能免费使用AI搜索、Gemini AI、AI照片修复、AI橡皮擦、AI去背景、AI智能抠图、AI证件照、OCR识别、在线思维导图、在线绘图工具、PDF工具箱、PDF翻译。 传送入口&a…

阿里云 Linux 搭建邮件系统全流程及常见问题解决

阿里云 Linux 搭建 [conkl.com]邮件系统全流程及常见问题解决 目录 阿里云 Linux 搭建 [conkl.com]邮件系统全流程及常见问题解决一、前期准备&#xff08;关键配置需重点检查&#xff09;1.1 服务器与域名准备1.2 系统初始化&#xff08;必做操作&#xff09; 二、核心组件安装…

python版若依框架开发:项目结构解析

python版若依框架开发 从0起步&#xff0c;扬帆起航。 python版若依部署代码生成指南&#xff0c;迅速落地CURD&#xff01;项目结构解析 文章目录 python版若依框架开发前端后端 前端 后端

RabbitMQ 的异步化、解耦和流量削峰三大核心机制

RabbitMQ 的异步化、解耦和流量削峰三大核心机制 RabbitMQ 是解决数据库高并发问题的利器&#xff0c;通过异步化、解耦和流量削峰三大核心机制保护数据库。下面从设计思想到具体实现&#xff0c;深入剖析 RabbitMQ 应对高并发的完整方案&#xff1a; 一、数据库高并发核心痛点…

前端没有“秦始皇“,但可以做跨端的王[特殊字符]

前端各领域的 “百家争鸣” 框架之争&#xff1a;有 React、Vue、Angular 等多种框架。它们各有优缺点&#xff0c;开发者之间还存在鄙视链&#xff0c;比如 Vue 嫌 React 难用&#xff0c;React 嫌 Vue 不够灵活。样式处理&#xff1a; CSS 预处理器&#xff1a;像 Sass、Les…

Spring Boot-面试题(52)

摘要&#xff1a; 1、通俗易懂&#xff0c;适合小白 2、仅做面试复习用&#xff0c;部分来源网络&#xff0c;博文免费&#xff0c;知识无价&#xff0c;侵权请联系&#xff01; 1. 什么是 Spring Boot 框架&#xff1f; Spring Boot 是基于 Spring 框架的快速开发框架&#…

JVM——JVM中的字节码:解码Java跨平台的核心引擎

引入 在Java的技术版图中&#xff0c;字节码&#xff08;Bytecode&#xff09;是连接源代码与机器世界的黄金桥梁。当开发者写下第一行public class HelloWorld时&#xff0c;编译器便开始了一场精密的翻译工程——将人类可读的Java代码转化为JVM能够理解的字节码指令。这些由…

Java中的JSONObject详解:从基础到高级应用

Java中的JSONObject详解&#xff1a;从基础到高级应用 在当今前后端分离的架构中&#xff0c;JSONObject已成为Java开发者处理JSON数据的瑞士军刀。本文将深入解析JSONObject的核心机制与实战技巧。 一、JSONObject的本质与实现库 1.1 核心定位 JSONObject是Java中表示JSON对…

在 SpringBoot+Tomcat 环境中 线程安全问题的根本原因以及哪些变量会存在线程安全的问题。

文章目录 前言Tomcat SpringBoot单例加载结果分析多例加载&#xff1a;结果分析&#xff1a; 哪些变量存在线程安全的问题&#xff1f;线程不安全线程安全 总结 前言 本文带你去深入理解为什么在web环境中(Tomcat SpringBoot)会存在多线程的问题以及哪些变量会存在线程安全的…

npm install 相关命令

npm install 相关命令 基本安装命令 # 安装 package.json 中列出的所有依赖 npm install npm i # 简写形式# 安装特定包 npm install <package-name># 安装特定版本 npm install <package-name><version>依赖类型选项 # 安装为生产依赖&#xff08;默认&…

贪心算法应用:最小反馈顶点集问题详解

贪心算法应用&#xff1a;最小反馈顶点集问题详解 1. 问题定义与背景 1.1 反馈顶点集定义 反馈顶点集(Feedback Vertex Set, FVS)是指在一个有向图中&#xff0c;删除该集合中的所有顶点后&#xff0c;图中将不再存在任何有向环。换句话说&#xff0c;反馈顶点集是破坏图中所…

BiliNote部署实践

​ 开源地址&#xff1a; https://github.com/JefferyHcool/BiliNote &#x1f680; 快速开始 1. 克隆仓库 git clone https://github.com/JefferyHcool/BiliNote.git cd BiliNote mv .env.example .env2. 启动后端&#xff08;FastAPI&#xff09; cd backend pip insta…