向量那点事儿

news/2025/9/26 23:46:53/文章来源:https://www.cnblogs.com/littleatp/p/19110709

目录
  • 一、向量
    • 坐标表示
  • 二、加减法
    • 向量加法
      • 应用示例
    • 向量减法
      • 应用示例
  • 三、向量内积
      • 应用示例
  • 四、向量外积
      • 应用示例
  • 五、小试牛刀
      • 代码示例
  • 六、小结

一、向量

这次我们继续聊一下向量。

向量可以理解为一个有方向的量

它既有大小(长度),又有方向(指向哪里)。

生活中很多东西都可以用向量描述,比如:

  • 🚗 速度(你开车 60 km/h 向东)
  • 🌬️ 风(风速 5 m/s 向北)
  • 📦 力(用 10 牛顿的力推箱子向右)
image-20250910182531731

坐标表示

在数学里,我们通常用坐标来表示向量;而在几何空间中,常常用箭头来表示向量,箭头的长度表示大小(模),方向表示向量的方向。

  • 在二维空间中,一个向量表示如下:

\[\vec{v} = (x, y) \]

其中 x 表示水平方向分量,y 表示竖直方向分量。
向量的模长为:\(|\vec{v}| = \sqrt{x^2 + y^2}\)

image-20250910183206403
  • 在三维空间中,一个向量表示如下:

\[\vec{v} = (x, y, z) \]

其中 x, y, z 分别是沿三个坐标轴的分量。
向量的模长为:\(|\vec{v}| = \sqrt{x^2 + y^2 + z^2}\)

  • 在N维空间中,一个向量表示如下:

\[\vec{v} = (x_1, x_2.. x_n) \]

其中 x1...xn 分别是各个维度的分量。
向量的模长为:\(|\vec{v}| = \sqrt{x_1^2 + x_2^2 + \dots + x_n^2} \\\)

二、加减法

向量加法

设定:

\[\vec{a} = (x_1, y_1), \quad \vec{b} = (x_2, y_2) \]

那么有:

\[\vec{a} + \vec{b} = (x_1 + x_2, \; y_1 + y_2) \]

加法的几何意义,可以使用三角形法则或平行四边形法则来说明:

image-20250910095714904

简单的可以理解为,\(\vec{a}+\vec{b}\) 就是从坐标原点沿着\(\vec{a}\)行进后,再沿着\(\vec{b}\)行进。

应用示例
image-20250910102403901

假定有两股方向的力,如下:

\(\vec{F_1} = (3, 4), \quad \vec{F_2} = (1, 2)\)

那么这两股力的合力为:

\(\vec{F} = \vec{F_1} + \vec{F_2} = (3+1, 4+2) = (4, 6)\)

向量减法

设定:

\[\vec{a} = (x_1, y_1), \quad \vec{b} = (x_2, y_2) \]

那么有:

\[\vec{a} - \vec{b} = (x_1 - x_2, \; y_1 - y_2) \]

加法的几何意义,可以使用三角形法则或平行四边形法则来说明:

image-20250910102038003

简单的可以理解为,\(\vec{a}-\vec{b}\) 就是从b的终点开始,朝着\(\vec{a}\)的终点行进的向量。

应用示例

在船的航行过程中,可以利用向量的减法来获得船和水流的相对速度。

image-20250910111156495

假定船的速度向量为:

\(\vec{v}_{船} = (8, 0) \quad (\text{向东 8 m/s})\)

水流速度向量为:

\(\vec{v}_{水} = (3, 1) \quad (\text{向东 3 m/s,向北 1 m/s})\)

那么船相对水流的速度向量为:

\(\vec{v}_{相对} = (8-3, 0-1) = (5, -1)\)

表示向东 5 m/s、向南 1 m/s。

三、向量内积

向量的内积又称为点积(Dot Product),内积是两个向量对应分量相乘后求和的一个标量值

设定:

\[\vec{a} = (x_1, y_1), \quad \vec{b} = (x_2, y_2) \]

那么有:

\[\vec{a} \cdot \vec{b} = x_1x_2 + y_1y_2 \]

从几何意义上讲,向量的内积还可以表示如下:

\[\vec{a} \cdot \vec{b} = |\vec{a}| |\vec{b}| \cos\theta \]

具体的证明可以参考下图,将坐标系进行旋转后,可完成推理:

其中 ⁡θ 表示两个向量的夹角,根据余弦定理可以得出:

  • 假定模长不变,夹角越小,内积则越大
  • 当夹角为90度时(两个向量垂直),此时内积为0
  • 内积的本质等同于向量的投影和模长的乘积
  • 坐标旋转时,内积保持不变
应用示例

我们在电商平台上浏览产品详情时,经常会看到"相似产品"这样的页签,其中会给我们推荐相关的产品。

这种商品推荐的场景便可以基于"余弦相似度"来实现,余弦相似度的核心是仅考虑向量的方向一致,忽略模长的影响。具体实现如下:

  1. 将商品信息特征化表述,包括:

    • 类目
    • 品牌
    • 价格区间
    • 颜色 / 尺寸 / 材质
    • 商品标题/描述
    • 图片特征
  2. 特征向量归一化

    上述的商品特征可以基于Embedding、CNN等算法来提取为特征值。

    这些特征值拼接后形成一个统一的商品向量,如下:

    \[\vec{g} = [x_{类目}, x_{品牌},x_{价格},x_{尺寸},x_{颜色},x_{图谱特征}..] \]

    由于不同维度的特征值其模长无法统一,我们需要将其进行归一化(L2归一):

    对于其中的 \(x_k\),其归一后的值为:

    \[X_k = \frac{x_k}{\sqrt{x_1^2 + x_2^2 + \cdots + x_n^2}} \]

    L2归一化使用欧几里得范数来计算,最终得到特征向量为:

    \[\vec{G} = [X_{类目}, X_{品牌},X_{价格},X_{尺寸},X_{颜色},X_{图谱特征}..] \]

    归一化后,∥G∥=1,余弦相似度就简化成两个单位向量的点积,只比较方向(特征分布模式),消除了特征值大小的影响。

  3. 计算商品特征向量的相似度,获得最相似的N个商品

    通过计算向量的点积来比较相似度:$ simulaty = \vec{G} \cdot \vec{G2}$

向量点积在机器学习中常用于评估特征的方向相似性

四、向量外积

向量的外积又称为叉积(Cross Product),两个向量的外积是一个同时垂直于两者的向量

设定:

\[\vec{a} = (x_1, y_1), \quad \vec{b} = (x_2, y_2) \]

那么有:

\[\vec{a} × \vec{b} = \vec{c} \]

  • 向量 \(\vec{c}\)的模长:$\vec{c} = ∣\vec{a}∣∣\vec{b}∣sin⁡θ $,在几何意义上等同与两个向量为边的平行四边形的面积。

  • 向量 \(\vec{c}\)的方向:垂直于两个向量构成的平面。

如下图所示:

image-20250910113835076

向量 \(\vec{c}\)的方向除了垂直之外,还需要遵循右手螺旋定则,也就是对于 \(\vec{a} × \vec{b} = \vec{c}\) 来说,右手四指方向从 a 转向 b,大拇指所指方向就是 c 的方向。所以, \(\vec{a} × \vec{b}\)\(\vec{b} × \vec{a}\) 的结果是相反的,即向量外积不满足交换律。

从几何图形上看,向量的外积可以垂直于两个向量组成的平面,当向量平行(共线)时,向量的外积为0。

需要注意的是,向量的外积仅适用于三维图形,在四维及更高维空间中,垂直于两个向量的方向不唯一,而是一个高维子空间,因此无法用一个单一向量来表示。

应用示例

物理学上,我们通过力矩(Torque)来描述一种"让物体转起来的能力"。

比如:

你用扳手拧螺丝,用力的大小、角度和离螺丝中心的距离都会影响拧动的效果。

同样的力,扳手越长(离中心越远),越容易拧动——因为力矩更大。

力矩的公式如下:

\[\vec{𝜏}=\vec{𝑟}×\vec{𝐹} \]

  • r 是从旋转中心到施力点的位置向量

  • 𝐹:施加的作用力

力矩是向量 r 和向量 F的外积向量:

  • 力矩的方向:由右手定则决定,表示旋转轴的方向

  • 力矩的大小:等于 \(|\vec{r}| \cdot |\vec{F}| \cdot \sin\theta\),也就是力度、垂直距离、和角度三者叠加的结果。

五、小试牛刀

下面使用 numpy 来实现本文提到的向量加减法、向量内积和外积计算。

代码示例
import numpy as np# 定义两个三维向量
a = np.array([3, 4, 0])
b = np.array([4, 0, 3])# 1️⃣ 向量加法
add = a + b
print("加法 a + b =", add)# 2️⃣ 向量减法
sub = a - b
print("减法 a - b =", sub)# 3️⃣ 向量内积(点积)
dot = np.dot(a, b)
print("内积 a · b =", dot)# 4️⃣ 特征归一化(L2归一)
a_norm = a / np.linalg.norm(a)
b_norm = b / np.linalg.norm(b)
print("归一化后的 a =", a_norm)
print("归一化后的 b =", b_norm)# 5️⃣ 归一后的余弦相似度
cos_sim = np.dot(a_norm, b_norm)
print("归一后的余弦相似度 =", cos_sim)# 6️⃣ 向量外积(叉积)
cross = np.cross(a, b)
print("外积 a × b =", cross)

执行上述程序,输出结果如下:

加法 a + b = [7 4 3]
减法 a - b = [-1  4 -3]
内积 a · b = 12
归一化后的 a = [0.6 0.8 0. ]
归一化后的 b = [0.8 0.  0.6]
归一后的余弦相似度 = 0.48
外积 a × b = [ 12  -9 -16]

六、小结

向量的概念早在中学数学、物理学中就已经能接触到了,理解向量和空间几何的结合非常重要。从最简单的加减法就能体会到基本相对量的价值;向量内积更是各种推荐算法、特征相似度计算的基础范式,向量外积在机械工程学中大行其道等等,这些无一证明了向量在现实的数学应用中的重要地位。

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

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

相关文章

c++输入输出详解

C++ 的输入输出(I/O)主要通过标准库中的流对象实现,核心是对“数据流”的操作。其语法规则围绕“流对象”“操作符”和“数据类型匹配”展开,以下从标准 I/O(控制台) 和文件 I/O 两部分详细说明。 一、标准输入输…

docker/docker compose/k8s

Docker、Docker Compose 和 Kubernetes(K8s)是现代容器化技术的核心组成部分,但它们扮演着不同的角色。 简单来说:Docker:用来创建和运行单个容器的工具。Docker Compose:用来定义和运行多个相互依赖的容器的工具…

中国开发者迎来新选择:Gitee成为研发协作平台转型期的中流砥柱

中国开发者迎来新选择:Gitee成为研发协作平台转型期的中流砥柱 随着腾讯CODING DevOps系列产品宣布逐步停止服务,中国开发者社区正面临一次重要的工具链迁移抉择。在这一行业转折点上,本土化研发协作平台Gitee凭借其…

PySpark - Get the number of rows

PySpark - Get the number of rowsspark is a SparkSession object, what does spark.sql().collect() do? ChatGPT said:Good question 👍 Let’s break it down:spark → a SparkSession object.spark.sql(query)…

如何推销网站建设做网站怎么签订协议

元描述:想要找到下一个 100 倍加密货币投资?请密切关注这篇文章;它揭示了所有可能很快变得非常有价值的 TON 网络宝石。 由 Telegram 提供支持的 TON(开放网络)生态系统正在蓬勃发展!这是一个充满激动人心的…

RK3588-ubuntu server - 详解

RK3588-ubuntu server - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

一文教你上手 Geometric Glovius 6.0:安装、授权与首个项目演示

Geometric Glovius 6.0.0是一款功能强大的3D可视化分析软件。它支持CATIA、NX、Creo等多种主流CAD文件格式,能精确测量距离、面积、体积等数据,还可进行动态截面切割、模型差异对比等操作。用户可通过缩放、旋转等方…

32单片机+free rtos移植CJSON库函数主要流程

1.cJSON库的官方地址 源码地址: https://github.com/DaveGamble/cJSON 2.提取cJSON.c cJSON.h 3.在项目中添加cJSON的路径并编译一遍 4.在main函数初始化时添加下面代码,重定向内存的申请,内存申请定向到rtos的内存池…

Gitee如何重塑中国开发者生态:本土化创新与数字化转型的双重奏

Gitee如何重塑中国开发者生态:本土化创新与数字化转型的双重奏 在数字经济蓬勃发展的今天,代码托管平台已经从单纯的工具演变为开发者生态系统的核心枢纽。作为国内领先的一站式代码托管与协作平台,Gitee凭借对中国…

从MESA模型到锁升级:synchronized性能逆袭的底层逻辑

从MESA模型到锁升级:synchronized性能逆袭的底层逻辑管程(Monitor)是一种用于管理共享资源访问的程序结构,能确保同一时刻只有一个线程访问共享资源,解决并发编程中的互斥和同步问题。MESA模型是管程的经典实现,…

网站建设项目进展情况汇报浙江省建设银行纪检官方网站

机器人模型获取 接上期:机器人控制系列教程之控制理论概述,文中详细讲解了如何通过Solidworks软件导出URDF格式的文件。文末提到了若需要将其导入到Simulink中可在命令行中输入smimport(urdf/S_Robot_urdf.urdf),MATLAB将自动打开Simulink以…

输入输出接口

IO接口的作用 又被称为IO控制器,设备控制器,负责协调主机和外部设备之间的数据传输 1.数据缓冲:通过数据缓冲寄存器(DBR)达到主机和外设的工作速度匹配 2.错误或状态检测:通过状态寄存器反馈设备的各种错误,状态…

Go语言中的信号捕获与优雅退出:SIGINT、SIGTERM和SIGKILL详解 - 若

在开发长期运行的服务时,如何让程序优雅退出是一个重要课题。今天我们来深入探讨Go语言中如何处理常见的进程信号,实现平滑关闭。 理解三个关键信号 1. SIGINT(信号2)- 礼貌的中断请求全称:Signal Interrupt触发方…

(二)3.1.9 生产“稳”担当:Apache DolphinScheduler Worker 服务源码全方位解析

本文是 Apache DolphinScheduler 3.1.9 版本源码解读的第二篇:Worker Server 启动流程源码解读以及相关流程设计。结尾处附有相关流程图,供大家参考。作者 | 李杰 移动云,Apache DolphinScheduler贡献者在现代数据驱…

实用指南:虚拟机搭建 DHCP 服务器 + 配置 DHCP 中继:完整实操指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

网站设计的技术方案wordpress安装主题教程

(来源:武汉市发改委)原标题:加快打造“五个中心” 武汉率先开建人工智能计算中心从华为东莞松山湖基地运来的预制化模块箱体,正在光谷科学岛起步区被吊装,未来将被“拼装”成武汉重要的人工智能算力基础设施。3月1日,武…

创建一个网站需要怎么做投票链接制作哪家服务好

在本篇文章里小编给大家整理的是一篇关于Python中免验证跳转到内容页的实例代码,有兴趣的朋友们可以学习分享下。相信很多人在浏览网页时,经常会碰到需要输入验证码才可以继续浏览的情况吧,遇到这种问题,大多数人只能进行繁琐的注…

海口建设局网站甘肃建设厅官方网站

Android 查看路由表_android 路由表_念雅的博客-CSDN博客

完整教程:生产环境实战:Spring Cloud Sleuth与Zipkin分布式链路追踪实践

完整教程:生产环境实战:Spring Cloud Sleuth与Zipkin分布式链路追踪实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family…

ibero 2025.1 Run PROGRAM_SPI_IMAGE_Action

ibero 2025.1 Run PROGRAM_SPI_IMAGE_Actionibero 2025.1 Run PROGRAM_SPI_IMAGE_ActionSPI Flash lemory is not configured. Use the Configure Design Initialization Data and memories tool to configure it按照以…