向量的基本运算

article/2025/10/23 5:32:20

向量是什么

向量就是给定一个点A,连接原点到点A,并具有由O到A方向的连线,表示为 O A ⃗ \vec{OA} OA . 书本的定义:向量就是具有大小和方向东西。

fig1

大小(magnitude)

向量的大小(magnitude)写作 ∥ x ∥ \Vert x \Vert x,称为模(norm).
通过(Pythagoras’ theorem)毕达哥拉斯定理求模如下图,
O A 2 = O B 2 + A B 2 {OA}^2 = {OB}^2 + {AB}^2 OA2=OB2+AB2
O A 2 = 3 2 + 4 2 {OA}^2 = {3}^2 + {4}^2 OA2=32+42
∥ x ∥ = 5 \Vert x \Vert = 5 x=5

fig2

方向(direction)

定义向量 u ( u 1 , u 2 ) \mathbf{u} (u_1,u_2) u(u1,u2)的方向为向量 w ( u 1 ∥ u ∥ , u 2 ∥ u ∥ ) \mathbf{w}(\frac{u_1}{\|u\|}, \frac{u_2}{\|u\|}) w(uu1,uu2)。如下图:
fig3

可以看到:
c o s ( θ ) = u 1 ∥ u ∥ cos(\theta)=\frac{u_1}{\|u\|} cos(θ)=uu1
c o s ( α ) = u 2 ∥ u ∥ cos(\alpha)=\frac{u_2}{\|u\|} cos(α)=uu2
所以向量 u ( 3 , 4 ) \mathbf{u}(3,4) u(3,4)方向向量是 w ( 0.6 , 0.8 ) \mathbf{w}(0.6,0.8) w(0.6,0.8)。方向向量的模为1.如下图
fig4

两个向量的加法

任意给给两个向量 u ( u 1 , u 2 ) \mathbf{u} (u_1, u_2) u(u1,u2) v ( v 1 , v 2 ) \mathbf{v} (v_1, v_2) v(v1,v2)两个向量相加: u + v = ( u 1 + v 1 , u 2 + v 2 ) \mathbf{u}+\mathbf{v}= (u_1+v_1, u_2+v_2) u+v=(u1+v1,u2+v2)

![fig5](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9pMi53cC5jb20vd3d3LnN2bS10dXRvcmlhbC5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMTQvMTEvMDUtc3VtLW9mLXR3by12ZWN0b3JzLWUxNDE1NTUzMjA3MzQwLnBuZw)

两个向量的减法

任意给给两个向量 u ( u 1 , u 2 ) \mathbf{u} (u_1, u_2) u(u1,u2) v ( v 1 , v 2 ) \mathbf{v} (v_1, v_2) v(v1,v2)两个向量相减: u − v = ( u 1 − v 1 , u 2 − v 2 ) \mathbf{u}-\mathbf{v}= (u_1-v_1, u_2-v_2) uv=(u1v1,u2v2)。 方向指向被减数的方向。
fig6

向量的点积(dot product)

x ⋅ y = ∥ x ∥ ∥ y ∥ c o s ( θ ) \mathbf{x} \cdot \mathbf{y} = \|x\| \|y\|cos(\theta) xy=xycos(θ), θ \theta θ 为两个向量的夹角。
推导过程如下:
fig7

根据前面的分析我们知道,
c o s ( β ) = a d j a c e n t h y p o t e n u s e = x 1 ∥ x ∥ cos(\beta) =\frac{adjacent}{hypotenuse} =\frac{x_1}{\|x\|} cos(β)=hypotenuseadjacent=xx1
s i n ( β ) = o p p o s i t e h y p o t e n u s e = x 2 ∥ x ∥ sin(\beta) =\frac{opposite}{hypotenuse} =\frac{x_2}{\|x\|} sin(β)=hypotenuseopposite=xx2
c o s ( α ) = a d j a c e n t h y p o t e n u s e = y 1 ∥ y ∥ cos(\alpha) =\frac{adjacent}{hypotenuse} =\frac{y_1}{\|y\|} cos(α)=hypotenuseadjacent=yy1
s i n ( α ) = o p p o s i t e h y p o t e n u s e = y 2 ∥ y ∥ sin(\alpha) =\frac{opposite}{hypotenuse} = \frac{y_2}{\|y\|} sin(α)=hypotenuseopposite=yy2
从图片中得到 θ = β − α \theta = \beta - \alpha θ=βα, 那么 c o s ( θ ) = c o s ( β − α ) cos(\theta) = cos(\beta - \alpha) cos(θ)=cos(βα)
c o s ( β − α ) = c o s ( β ) c o s ( α ) + s i n ( β ) s i n ( α ) cos(\beta - \alpha) = cos(\beta)cos(\alpha) + sin(\beta)sin(\alpha) cos(βα)=cos(β)cos(α)+sin(β)sin(α)
于是,
c o s ( θ ) = c o s ( β − α ) = c o s ( β ) c o s ( α ) + s i n ( β ) s i n ( α ) cos(\theta) = cos(\beta - \alpha) = cos(\beta)cos(\alpha) + sin(\beta)sin(\alpha) cos(θ)=cos(βα)=cos(β)cos(α)+sin(β)sin(α)
c o s ( θ ) = x 1 ∥ x ∥ y 1 ∥ y ∥ + x 2 ∥ x ∥ y 2 ∥ y ∥ cos(\theta) = \frac{x_1}{\|x\|}\frac{y_1}{\|y\|}+ \frac{x_2}{\|x\|}\frac{y_2}{\|y\|} cos(θ)=xx1yy1+xx2yy2
c o s ( θ ) = x 1 y 1 + x 2 y 2 ∥ x ∥ ∥ y ∥ cos(\theta) = \frac{x_1y_1 + x_2y_2}{\|x\|\|y\|} cos(θ)=xyx1y1+x2y2
∥ x ∥ ∥ y ∥ c o s ( θ ) = x 1 y 1 + x 2 y 2 \|x\|\|y\|cos(\theta) = x_1y_1 + x_2y_2 xycos(θ)=x1y1+x2y2

点积的算术定义就出来,
x ⋅ y = x 1 y 1 + x 2 y 2 = ∑ i = 1 2 ( x i y i ) \mathbf{x} \cdot \mathbf{y} =x_1y_1 + x_2y_2 = \sum_{i=1}^{2}(x_iy_i) xy=x1y1+x2y2=i=12(xiyi)
从上面的集合定义也能知道,两个向量的点积是一个数。

向量的正交投影

如图给定两个向量xy,那么向量xy上的投影为z
fig8
通过上面的学习我们知道,
c o s ( θ ) = ∥ z ∥ ∥ x ∥ cos(\theta)= \frac{\|z\|}{\|x\|} cos(θ)=xz
∥ z ∥ = ∥ x ∥ c o s ( θ ) \|z\|=\|x\|cos(\theta) z=xcos(θ)
点积 c o s ( θ ) = x ⋅ y ∥ x ∥ ∥ y ∥ cos(\theta) = \frac{\mathbf{x} \cdot \mathbf{y}}{\|x\|\|y\|} cos(θ)=xyxy
于是可以推导得
∥ z ∥ = x ⋅ y ∥ y ∥ \|z\|=\frac{\mathbf{x} \cdot \mathbf{y}}{\|y\|} z=yxy
另外我们知道方向向量的,如果u表示向量y的方向向量, u = y ∥ y ∥ \mathbf{u}=\frac{\mathbf{y}}{\|y\|} u=yy, 那么向量x在向量y上面的投影可以由下式计算:
∥ z ∥ = u ⋅ x \|z\|=\mathbf{u} \cdot \mathbf{x} z=ux

我们还注意到,向量x在向量y上的投影得到的向量z,它的方向向量和向量y的方向向量是一致的,所以向量z可表示为 z = ∥ z ∥ u \mathbf{z}=\|z\|\mathbf{u} z=zu

知道了向量x在向量y上面的投影z后,我们就能够计算向量x-z的距离:
∥ x − z ∥ = ( 3 − 4 ) 2 + ( 5 − 1 ) 2 = 17 \|x-z\| = \sqrt{(3-4)^2 + (5-1)^2}=\sqrt{17} xz=(34)2+(51)2 =17

fig9

详见原文地址:https://www.svm-tutorial.com/2014/11/svm-understanding-math-part-2/


http://chatgpt.dhexx.cn/article/edbGbPVG.shtml

相关文章

向量运算

零向量 任意一维都是0的向量,例如[0,0,0],3D零向量。 零向量是唯一大小为零的向量,也是唯一一个没有方向的向量。但不是点,只是没有位移。 负向量 要得到任意向量的负向量,只需要简单的将向量…

利用websocket实现群聊以及单聊

利用websocket实现群聊以及单聊 项目结构实现代码运行截图 在这里提供一下思路,正常情况下我们登陆进去之后就应该打开一个ws连接,以便和服务器进行通信,将打开的管道用一个set容器进行存储,并将用户名或者其他能唯一标示用户的字…

Java实现钉钉自定义群聊机器人

参考文档: 自定义机器人接入 - 钉钉开放平台https://open.dingtalk.com/document/orgapp/custom-robot-access 自定义机器人安全设置 - 钉钉开放平台目前有3种安全设置方式,请根据需要选择一种。https://open.dingtalk.com/document/robots/customize-ro…

Netty基础,Netty实现群聊系统

NIO群聊系统 这里面的知识比较全面,用到了我们之前学习的三大组件,首先我先来给大家介绍本系统的功能 服务端功能 最基本的当然是注册功能,也就是将serverSocketChannel注册进Selector,Selector负责调度事件 监听、读取客户端…

c语言 多进程实现基于UDP的网络群聊聊天室

功能 有新用户登录,其他在线的用户可以收到登录信息 有用户群聊,其他在线的用户可以收到群聊信息 有用户退出,其他在线的用户可以收到退出信息 服务器可以发送系统信息 流程图如下: 提示: 客户端登录之后&#x…

Spring Boot使用WebSocket实现群聊

1.通过https://start.aliyun.com创建一个spring boot项目 https://start.aliyun.com 所需依赖: 2.编写代码 目录: WebMvcConfig,监控用户页面: package com.example.mywbsk.config;import org.springframework.context.annotat…

网络编程 : 基于UDP的网络群聊聊天室

一、UDP网络编程: 1.1 流程 服务器流程: 创建用户数据报套接字 填充服务器的网络信息结构体 绑定套接字与服务器网络信息结构体 收发数据 关闭套接字 客户端流程: 创建用户数据报套接字 填充服务器的网络信息结构体 收发数据 关闭套接字 二、基于UDP的网络群聊聊天…

Java网络编程:TCP实现群聊功能代码

Java网络编程:TCP实现群聊功能代码 实现的功能:群聊 具体操作流程的大致思路: 某个客户端发送消息,服务器将该消息转发给其余客户端(除了自己)。 代码一共分两个端(服务器和客户端&#xff0…

【Java教程】UDP实现群聊聊天室

大家好,今天为大家带来了一个非常有意思的小程序——UDP实现的群聊聊天室。这个程序使用的UDP协议,并使用DatagramSocket的子类MulticastSocket实现组播,可以部署在一个局域网内的多台电脑上,并可以实现文字群聊。 本文将会按照以…

群聊私聊天建群社交即时通讯H5系统开发

群聊私聊天建群社交即时通讯H5系统开发 前端功能: 聊天、通讯录、动态、发现、我、多国语言、私聊、群聊、创建群聊(设置免费、收费)、发布动态、发信息(图片、文字、红包、不支持语言)、我的余额(后台添加…

socket.io实现简易版群聊

最近学了点 websocket 的技术知识,了解到 node.js 有相关技术——socket.io可以实现,就想着实现一个简单版本的群聊。 先看看效果图 在浏览器中打开2个窗口,访问 http://localhost:3000/socket 目录结构 node 服务器代码实现 需要安装 exp…

Go实现简易聊天室(群聊)

参考:Go 群聊 ( goroutine ) 语雀 基于websocket的聊天室,可进一步参考: (1) go实现聊天室(WebSocket方式) (2) Golang代码搜集-基于websocketvue.js的简易聊天室 闲着无聊ing~ 一直想着能用go整一些好玩的小工具,想着想着突然想…

vue+websocket+nodejs创建聊天室- 创建群聊、加入群聊

前言 前几篇我们讲了如何创建聊天室,一对一/一对多聊天,以及加已读未读消息状态。 这篇主要讲如何创建群聊和加入群聊。 还是跟之前一样,本文只写新加入的逻辑,之前逻辑请查看之前文章。 PS:效果稍微有点粗糙哈哈,不要…

html群聊插件,团队群聊.html

团队群聊 $axure.utils.getTransparentGifPath function() { return resources/images/transparent.gif; }; $axure.utils.getOtherPath function() { return resources/Other.html; }; $axure.utils.getReloadPath function() { return resources/reload.html;…

ajax聊天室创建群聊,js+node.js+socket.io实现聊天功能(私聊,创建群聊)

效果图: 这里启动了四个客户端进行测试 1. 登录,以及获取在线用户列表 2. 私聊功能 3. 群聊功能 偶然发现了WebSocket, 发现这个可以实时通信,在线聊天,所以就做了一个聊天工具的demo,记录一下 Socket.io WebSocket是js原生自带的,而Socket.io相当于是对WebSocket进行封装…

php怎么做群聊,workerman实现群聊

服务端: require_once "../vendor/autoload.php"; use Workerman\Worker; $worker new Worker(‘websocket://0.0.0.0:2345‘); $worker->count 1; $worker->onWorkerStart function($data){ echo "连接开始\n"; }; $worker->onCon…

致微信:我们什么时候重新定义群聊?

你永远都不知道,自己到底有多少微信群。 你也很难想象,一个20多人的小团队,相互之间会建几百个群,然后当你需要群发一个文件/通知时,还是找不到合适的群,怎么办?重新拉一个群呗。 如果你加的群稍…

怎么玩转LINE 群聊

关键词:LINE群聊 ;SaleSmartly(ss客服) 一个 LINE 群聊是企业让客户了解其产品或服务的有效方式。如果使用得当, LINE 小组是企业同时快速培养与多个客户关系的绝佳场所。想了解更多吗?继续阅读&#xff0…

微信怎么找群聊?找回微信群聊只需要这样…

如今社会中的日常生活已经离不开微信,微信是社交界的一股清流,聊天、视频、语音等等功能,而且支付功能的用途范围在国内也甚是广泛。微信怎么找群聊?是的,当多个好友之间相互认识,或者都有一个共同点的时候…

免费tk域名+freewebhostingarea空间

1.申请免费域名 进入http://www.dot.tk(推荐注册tk域名),申请一个新的域名,每次申请12个月以下是免费的,到期前14天可以免费续期 在此页面执行下一步之前,需要进行设置DNS服务器 2.获取DNS服务器 申请进…