当前位置: 首页 > news >正文

【线性代数】理解矩阵乘法的意义(点乘)

刚接触线性代数时,很不理解矩阵乘法的计算规则,为什么规则定义的看起来那么有规律却又莫名其妙,现在参考了一些资料,回过头重新总结下个人对矩阵乘法的理解(严格来说是点乘)。

理解矩阵和矩阵的乘法,可以先理解矩阵和向量的乘法,因为矩阵可以看成是不同列向量的集合。

下面从基变换视角理解矩阵的乘法原理,基变换视角是将矩阵的每个列向量看成是新基坐标系中的一个基坐标。

先考虑一个规则的 2x2 的矩阵和一个 2x1 的向量之间的乘法,例如:
[ 1 − 2 1 2 ] [ 1 1 ] = [ − 1 3 ] \begin{bmatrix} 1&-2 \\ 1&2 \end{bmatrix} \begin{bmatrix} 1\\ 1 \end{bmatrix} = \begin{bmatrix} -1\\ 3 \end{bmatrix} [1122][11]=[13]
后面为了方便描述,分别用A表示矩阵,a表示等号左边的向量(1, 1),b表示等号右边的向量(-1, 3)。

上面这个乘法过程可以理解为:把矩阵A看成一个新的基坐标系,(1, 1) 和 (-2, 2) 分别是新基坐标系中的x, y轴。b(1, 1)可以看成是这个新基坐标系视角下坐标表示的一个向量,左边乘上一个矩阵A,相当于求出在以矩阵A为新的基坐标系的视角下,向量(1, 1)在标准的笛卡尔坐标系中的坐标表示。

可视化上面这个计算:

import numpy as np
import matplotlib.pyplot as plt# 定义矩阵和向量
A = np.array([[1, -2], [1, 2]])
b = np.array([1, 1])# 计算变换后的向量
b_transformed = A @ b# 定义标准基
origin = np.array([[0, 0], [0, 0]])# 绘制
fig, ax = plt.subplots()# 绘制原始向量
ax.quiver(*origin, b[0], b[1], angles='xy', scale_units='xy', scale=1, color='blue', label='Original Vector (1,1)')# 绘制新基
ax.quiver(*origin, A[0, 0], A[1, 0], angles='xy', scale_units='xy', scale=1, color='red', label='New x-axis (1,1)')
ax.quiver(*origin, A[0, 1], A[1, 1], angles='xy', scale_units='xy', scale=1, color='green', label='New y-axis (-2,2)')# 绘制变换后的向量
ax.quiver(*origin, b_transformed[0], b_transformed[1], angles='xy', scale_units='xy', scale=1, color='purple', label='Transformed Vector (-1,3)')# 设置图形属性
ax.set_xlim(-3, 3)
ax.set_ylim(0, 3)  # 只显示x轴的上半部分
ax.set_aspect('equal')
plt.grid()# 调整图例位置
plt.legend(loc='upper left', bbox_to_anchor=(0.6, 1), fontsize='small')
plt.title('Vector Transformation and Basis Visualization')
plt.xlabel('X')
plt.ylabel('Y')plt.show()

在这里插入图片描述

红色和绿色的向量构成了一个新的坐标基底,从这个基底的视角来看,棕色的向量还是(1, 1),但是这个新基坐标系下的向量(1, 1)在原笛卡尔坐标系下的表示是(-1, 3)。

所以基变换角度来看矩阵乘向量 A ⋅ b A \cdot b Ab,可以理解成以矩阵A为新的基底,该基底下的向量b,在笛卡尔坐标系下的真实位置。

由此理解矩阵乘法的计算规则,为什么就是像下面这样,前面一个矩阵的第 i 行 x 后一个矩阵的第 j 列,结果为新的矩阵的第 ij 个元素:
[ 1 − 2 1 2 ] [ 1 1 ] = [ − 1 × 1 + ( − 2 ) × 1 1 × 1 + 2 × 1 ] = [ − 1 3 ] \begin{bmatrix} 1&-2 \\ 1&2 \end{bmatrix} \begin{bmatrix} 1\\ 1 \end{bmatrix} = \begin{bmatrix} -1\times1+(-2)\times1\\ 1\times1+2\times1 \end{bmatrix}= \begin{bmatrix} -1\\ 3 \end{bmatrix} [1122][11]=[1×1+(2)×11×1+2×1]=[13]
因为左边矩阵不同的列向量代表新基坐标系中不同维度下的基底,后面矩阵列向量中的不同坐标分别表示新的基坐标系中不同维度的坐标,而新的基坐标系中,不同维度的基坐标轴的坐标表示,又可以看成是相对于原笛卡尔坐标系的投影,比如新的x轴(1, 1),表示这个轴在笛卡尔坐标系中的x, y轴上的投影分别都是1,新的x轴中的一个单位长度,等价于原笛卡尔坐标系中x, y轴各自一个单位长度。

因此矩阵乘法之所以规定行乘列的值作为计算的结果,本质上是把新基坐标系下,一个向量所有维度的坐标,在原笛卡尔坐标系下按照不同维度(前面矩阵的行)进行了一个汇总求和。

所以也能理解为什么规定矩阵乘法,要求必须前面一个矩阵的列数等于后一个矩阵的行数,因为前面矩阵的列数其实就是新的基坐标系的维度,后面矩阵的行数,其实就是一个向量在这个新基坐标系中各维度下的坐标表示,二者维度不同,也就没有汇总的必要和意义。

推广到高维的不规则的矩阵,比如一个3x2的矩阵乘上一个2x1的向量,新的基坐标系还是只有两个维度,只不过每个维度会投影到一个三维的笛卡尔坐标系(因为矩阵的列向量是用3个数表示,说明在笛卡尔坐标系中有3个维度的投影)。后面这个2x1的向量可以看成是新的基坐标系下的向量表示,最终的计算还是将这个向量分别在笛卡尔坐标系的三个维度上汇总求和。

以下面这个为例:

[ 0 1 1 0 1 1 ] ⋅ [ 1 1 ] = [ 1 1 2 ] \begin{bmatrix} 0 & 1\\ 1 & 0\\ 1 & 1 \end{bmatrix} \cdot \begin{bmatrix} 1\\ 1 \end{bmatrix}= \begin{bmatrix} 1\\ 1\\ 2 \end{bmatrix} 011101 [11]= 112

在这里插入图片描述
至于推广到更多行或列的矩阵乘法,无非增加行数是增加了新的基坐标在标准笛卡尔坐标系下的分解维度,增加列数是增加了新坐标系的基底数量,原理都还是一样的。

至于矩阵乘矩阵,可以把后一个矩阵看成是多个列向量的集合,用矩阵乘向量的视角去理解。

相关文章:

【线性代数】理解矩阵乘法的意义(点乘)

刚接触线性代数时,很不理解矩阵乘法的计算规则,为什么规则定义的看起来那么有规律却又莫名其妙,现在参考了一些资料,回过头重新总结下个人对矩阵乘法的理解(严格来说是点乘)。 理解矩阵和矩阵的乘法&#x…...

游戏开发技能系统常用概念

一个角色同一时间可能存在多个Skill,一个当前播放的主动技能,还有好几个不在播放中,但是也没有结束的。 技能事件: 实现具体的技能功能,技能动作的执行都是通过触发事件来触发的,比如(时间帧&am…...

【案例80】麒麟操作系统无法使用Uclient访问NC65

问题现象 麒麟操作系统,安装Uclient,添加应用后无法看到登录界面,一直在转圈。 问题分析 进入到Uclient的工作目录 发现在工作目录下,无相关app.log生成。 查看Uclient的main.log发现,有大量的报错与Uclient下的sha…...

【AIGC-ChatGPT进阶副业提示词】育儿锦囊:化解日常育儿难题的实用指南

引言 在育儿的道路上,每位父母都会遇到各种各样的挑战和困惑。从孩子的饮食习惯到沟通交流,从作息规律到行为管理,这些看似平常的问题往往会让父母感到焦虑和无助。本文将通过实际案例分析和解决方案,为父母们提供一个实用的育儿…...

使用Docker部署一个Node.js项目

本文档将介绍如何使用Docker来部署一个Node.js项目。Docker是一种开源平台,可以自动化应用程序的部署、扩展和管理。通过Docker,我们可以将应用程序及其依赖项打包到一个容器中,从而确保在不同环境中运行的一致性。接下来,我们将逐…...

数据科学与SQL:如何利用本福特法则识别财务数据造假?

目录 0 本福特法则介绍 1 数据准备 2 问题分析 步骤1:提取首位数: 步骤2:计算首位数字的实际频率分布 <...

文心一言对接FreeSWITCH实现大模型呼叫中心

文心一言对接FreeSWITCH实现大模型呼叫中心 作者&#xff1a;开源大模型智能呼叫中心FreeIPCC&#xff0c;Github&#xff1a;https://github.com/lihaiya/freeipcc 随着人工智能技术的快速发展&#xff0c;特别是大规模语言模型&#xff08;LLM&#xff09;的应用&#xff0…...

LSTM实现天气模型训练与预测

要实现一个天气预测的模型&#xff0c;并确保该模型可以反复进行训练和更新&#xff0c;先设计&#xff1a; 设计方案 数据获取&#xff1a; 使用公开的天气数据API&#xff08;例如OpenWeather API或其他类似的API&#xff09;获取天气数据。确保数据以合适的格式&#xff08…...

TCL发布万象分区,再造Mini LED技术天花板

作者 |辰纹 来源 | 洞见新研社 现实世界中&#xff0c;光通过悬浮在大气中的冰晶折射&#xff0c;呈现出环形、弧形、柱形或亮点的扩散&#xff0c;从而产生光晕&#xff0c;雨后的彩虹是我们经常能看到的光晕现象。 然而&#xff0c;当光晕出现在电视中&#xff0c;那就不是…...

2024广东省职业技能大赛云计算——私有云(OpenStack)平台搭建

OpenStack搭建 前言 搭建采用双节点安装&#xff0c;即controller控制节点和compute计算节点。 CentOS7 系统选择 2009 版本&#xff1a;CentOS-7-x86_64-DVD-2009.iso 可从阿里镜像站下载&#xff1a;https://mirrors.aliyun.com/centos/7/isos/x86_64/ OpenStack使用竞赛培…...

简单了解图注意力机制

简单了解图注意力机制 如果对传统的图匹配的聚合方式进行创新的话&#xff0c;也就是对h这一个节点的聚合方式进行创新。 h i ( l 1 ) Norm ⁡ ( σ ( h i ( l ) α ∥ h i ( l ) ∥ m i ( l ) ∥ m i ( l ) ∥ ) ) , \mathbf{h}_{i}^{(l1)}\operatorname{Norm}\left(\sigm…...

UI Automator Viewer操作

版本&#xff1a;24.4.1 使用UI Automator Viewer报错如下&#xff1a; Error obtaining Ul hierarchy Reason: Error while obtaining Ul hierarchy XML file: com.android.ddmlib.SyncException: Remote object doesnt exist!可以使用指令&#xff1a; 保存uix文件 adb sh…...

SpringBoot的创建方式

SpringBoot创建的五种方式 1.通过Springboot官网链接下载 注意SpringBoot项目的封装方式默认为Jar 需要查看一下&#xff0c;自己的Maven版本是否正确 创建成功 2.通过 aliyun官网链接下载 修改服务路径为阿里云链接 创建成功 3.通过Springboot官网下载 点击&#xff0c;拉到最…...

Vue3之性能优化

Vue3作为Vue框架的最新版本&#xff0c;在性能上进行了大量的优化&#xff0c;使得其在处理大型应用和复杂界面时表现更加出色。本文将详细介绍Vue3的性能提升、优化策略以及性能提升的实例&#xff0c;并结合具体代码和性能测试数据&#xff0c;展示Vue3在实际应用中的性能优势…...

RFdiffusion Sampler类 sample_step 方法解读

Sampler类的sample_step 方法的主要目的是根据扩散模型的预测生成在时间步 t-1 上的下一个三维结构、序列和其他相关特征。这是扩散采样过程的核心步骤之一。 源代码: def sample_step(self, *, t, x_t, seq_init, final_step):Generate the next pose that the model should…...

Flutter组件————FloatingActionButton

FloatingActionButton 是Flutter中的一个组件&#xff0c;通常用于显示一个圆形的按钮&#xff0c;它悬浮在内容之上&#xff0c;旨在吸引用户的注意力&#xff0c;并代表屏幕上的主要动作。这种按钮是Material Design的一部分&#xff0c;通常放置在页面的右下角&#xff0c;但…...

算法学习(十六)—— 综合练习

目录 1863. 找出所有子集的异或总和再求和 47. 全排列 Ⅱ 17. 电话号码的字母组合 22. 括号生成 77. 组合 494. 目标和 39. 组合总和 784. 字母大小写全排列 526. 优美的排列 51. N皇后 36. 有效的数独 37. 解数独 79. 单词搜索 1219. 黄金矿工 980. 不同路径 Ⅲ…...

kratos源码分析:熔断器

文章目录 为什么需要熔断Google sre弹性熔断算法kratos Breaker源码分析公共接口sre实现上报请求结果判定是否熔断 为什么需要熔断 一般来说&#xff0c;当服务器过载&#xff08;overload&#xff09;时&#xff0c;需要给client返回服务过载的报错 但是拒接请求也有成本&…...

CTF_1

CTF_Show 萌新赛 1.签到题 <?php if(isset($_GET[url])){system("curl https://".$_GET[url].".ctf.show"); }else{show_source(__FILE__); }?> 和 AI 一起分析 1.if(isset($_GET[url]))检查GET请求中是否存在名为url的参数。 curl 2.curl…...

【系统】Mac crontab 无法退出编辑模式问题

【系统】Mac crontab 无法退出编辑模式问题 背景一、问题回答1.定位原因&#xff1a;2.确认编辑器类型3.确保编辑器进入正确3.1 确认是否有crontab调度任务3.2 进入编辑器并确保编辑器正常3.3 保存操作 4.确认crontab任务存在5.确保脚本的可执行性和正确性 二、后续 背景 之前…...

CRM功能解析:覆盖客户、销售、数据、库存、工单全场景

在数字化转型浪潮中&#xff0c;企业对业务管理系统的需求已从单一CRM延伸至客户分层、销售自动化、数据分析、进销存、工单协同的全链路覆盖。不同系统在核心能力的实现逻辑与落地价值上差异显著&#xff0c;本文选取超兔一体云、Attio、Creatio、伙伴云CRM、OKKICRM&#xff…...

STM32F407VE的FSMC时序调优笔记:如何让320x480的ILI9488屏幕刷得更快更稳

STM32F407VE的FSMC时序调优笔记&#xff1a;如何让320x480的ILI9488屏幕刷得更快更稳 当一块320x480分辨率的ILI9488屏幕在STM32F407VE上成功点亮后&#xff0c;真正的挑战才刚刚开始。许多工程师会发现&#xff0c;虽然屏幕能显示内容&#xff0c;但刷新率低下、画面闪烁甚至偶…...

【论文阅读】从过程技能到策略基因:走向经验驱动的测试时进化 From Procedural Skills to Strategy Genes: Towards Experience-Driven

从过程技能到策略基因:走向经验驱动的测试时进化 From Procedural Skills to Strategy Genes: Towards Experience-Driven Test-Time Evolution 作者:Junjie Wang˒* Yiming Ren˒* Haoyang Zhang* InfiniteEvolutionLab, EvoMap 清华大学 wangjunjie@sz.tsinghua.edu.cn…...

3分钟免费汉化Android Studio:社区中文语言包完整安装教程

3分钟免费汉化Android Studio&#xff1a;社区中文语言包完整安装教程 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 还在为Andr…...

告别轮询!用STM32CubeMX和DMA实现ADC多通道‘无感’采集与串口打印(附完整工程)

告别轮询&#xff01;STM32CubeMX与DMA实现ADC多通道无感采集实战指南 在嵌入式开发中&#xff0c;数据采集系统的效率往往决定了整个应用的性能上限。传统轮询方式不仅消耗大量CPU资源&#xff0c;还会引入不可预测的延迟。想象一下&#xff0c;当你需要同时监测多个环境传感器…...

从CAN报文到转速值:手把手拆解SAE J1939-71的F004参数组(附Python解析代码)

从CAN报文到转速值&#xff1a;SAE J1939-71的F004参数组实战解析与Python实现 在汽车电子和商用车诊断领域&#xff0c;SAE J1939协议栈堪称工程师的"第二语言"。而其中J1939-71文档定义的参数组(PGN)解析&#xff0c;则是将原始CAN报文转化为工程价值的核心技能。本…...

极为罕见!35米宽小行星近距离掠过地球

【环球时报特约记者 陈山】据美国全国广播公司&#xff08;NBC&#xff09;网站19日报道&#xff0c;一颗直径约50到115英尺&#xff08;1英尺约合0.3米&#xff09;的小行星于18日近距离飞掠地球&#xff0c;成为近年来非常罕见的一幕。小行星从地球附近掠过的概念图。欧洲航天…...

将Taotoken接入Node.js后端服务,为应用添加智能对话能力

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 将Taotoken接入Node.js后端服务&#xff0c;为应用添加智能对话能力 1. 场景概述&#xff1a;后端服务集成大模型的需求 在开发具…...

嵌入式开发实战:基于RZ/G2L异构处理器与Linux的工业物联网平台深度体验

1. 项目概述&#xff1a;一次“零成本”的嵌入式开发深度体验最近在嵌入式开发圈里&#xff0c;一个消息引起了不小的讨论&#xff1a;米尔电子联合瑞萨&#xff0c;推出了基于RZ/G2L高性能处理器的开发板免费试用活动。简单来说&#xff0c;就是开发者可以申请免费借用这块开发…...

CANopen调试实战:当SDO读写失败时,如何像老司机一样快速读懂Abort报文里的错误码?

CANopen调试实战&#xff1a;SDO读写失败时快速解析Abort报文错误码 调试CANopen设备时&#xff0c;SDO通信失败是最常见的痛点之一。当设备返回Abort报文&#xff0c;屏幕上那一串十六进制代码往往让工程师陷入迷茫——是对象字典配置错误&#xff1f;还是网络通信问题&#…...