向量复习(一):定义、求解、四则运算、点积和叉积

article/2025/10/23 2:30:20

向量复习(一)

  • 1. 向量的定义
  • 2. 向量的表示
  • 3. 向量的求解
  • 4. 向量的四则运算
    • 4.1 加法
    • 4.2 减法
    • 4.3 乘法和除法
  • 5. 点积和叉积
    • 5.1 点积
    • 5.2 叉积
  • 6. 模的求解
  • 7. 附录:代码
  • 8. 免责声明

首先,我们先来复习一下二维空间几何求交涉及的向量相关知识,方便那些数学基础不太好或好多年未接触数学的童鞋们。楼主就是其中一员哦,6-7年没有再碰高中数学了,所以对于向量比较熟悉的童鞋可以跳过这部分内容。

1. 向量的定义

在数学中,向量(也称为欧几里得向量、几何向量、矢量),指具有大小(magnitude)和方向的量。它可以形象化地表示为带箭头的线段。箭头所指:代表向量的方向;线段长度:代表向量的大小。与向量对应的量叫做数量(物理学中称标量),数量(或标量)只有大小,没有方向。1

定义大家应该都能明白,但是需要注意一点:给定的向量并不是固定不动的,它不像线段,起始和中止点都是固定的,向量是可以随意平移的,但线段不行,这点后面我们也会说。

2. 向量的表示

向量有两种表示方式:1. 几何表示法;2. 坐标表示法;几何表示法如下图1

在这里插入图片描述
而坐标表示法比较重要,后面所涉及的都是这种方法,如下图1
在这里插入图片描述
简单来说,向量(a, b)(以下简称v(a, b)),表示往x轴正方向移动a个单位,往y轴正方向移动b个单位。比如说v(4, 2),如下图所示:

在这里插入图片描述

每个虚线小箭头表示一个单位,我们可以看到从(2, 2)为起点,向x正方向移动4个单位,然后向y轴正方向移动2个单位,最后连接首尾两点的有向线段即为v(4, 2)。注意,我们之前提到向量可以随意平移,所以下面两组向量都表示同一个向量,即使它们的起点和终点并不相同:

在这里插入图片描述

也就是说,向量和起始终止位置无关,之和移动的方向和大小有关系。也可以说向量是动态的,而线段是静态的,这点大家需要注意啦哒~

3. 向量的求解

如果我们已知两个坐标点,如何求解这两点所表示的向量呢?方法也很简单:

v(a, b) = point1 - point2 = v(point1.x - point2.x, point1.y - point2.y)

其实就是两个坐标点x和y相减,那向量方向为:point2为起始点,point1为中止点,比如下面两点 (2,2) 和 (4,4),可以表示两个相反方向但模相同的向量(模即为向量的长度):

v(2, 2):
在这里插入图片描述
v(-2. -2):

在这里插入图片描述
所以大家在用坐标求解向量的时候一定要注意方向哦。

4. 向量的四则运算

4.1 加法

两个向量相加,一般使用三角形法则或四边形法则。比如v(4, 0) + v(0, 2) = v(4, 2):

在这里插入图片描述
从上图可以看出,最终求解的向量(标红)即为另外两个向量所组成的三角形的边。或者我们将v(4, 0) 和 v(0, 2)平移到对面的方向,组成一个平行四边形,那么最终求解的向量为这个平行四边形的内对角线:

在这里插入图片描述
而且我们也可以注意到,向量相加即为两个向量坐标之和:

/*** vector addition* */public Vector add( Vector vector ) {// 无视minsIDreturn new Vector( x + vector.x, y + vector.y, minsID-- );
}

4.2 减法

其实向量的减法可以看成加上一个方向相反的向量,所以同样适用三角形或平行四边形法则。还是上面的例子,这次我们减去v(0, 2),即加上v(0, -2):

在这里插入图片描述
另外注意,向量的运算需要两两向量首尾相连才能运算,所以下面右边这种是不允许的:

在这里插入图片描述

/*** vector subtract* */public Vector subtract( Vector vector ) {return new Vector( x - vector.x, y - vector.y, minsID-- );
}

4.3 乘法和除法

这里的乘法和除法并不是两个向量的乘法和除法,而是和一个常量相乘和相除。向量之间的乘法是后面会讲的点积和叉积,但向量之间没有除法。向量和常量相乘或相除,大家可以理解为两个向量之间的比例关系,我们用最简单的共线向量(即平行向量)来举例:

在这里插入图片描述
如果只看两者的模,我们知道 |v(8,0)| = 4|v(2,0)|,或者 |v(8,0)| / 4 = |v(2,0)|;上面表达了两个向量之间模的比例,但我们也可以直接用向量来表示两者之间的关系:v(8,0) = 4v(2,0),或者 v(8,0) / 4 = v(2,0);也就是说四分之一个v(8,0)即为v(2,0),4个v(2,0)即为一个v(8,0):

在这里插入图片描述

理解了这些概念,那么相应的代码也是很简单了:

/*** vector multiplication* */public Vector multiply( float ratio ) {return new Vector( ratio * x , ratio * y, minsID-- );
}/*** vector division* */public Vector division( float ratio ) {return new Vector( x / ratio , y / ratio, minsID-- );
}

同时,楼主给到的图例也说明了向量四则运算的几何关系,大家可以注意下呢。

5. 点积和叉积

这部分主要介绍点积和叉积的计算方法和几何意义,至于其他详细的内容,有兴趣的童鞋可以参考这篇文章:向量内积(点乘)和外积(叉乘)概念及几何意义。

5.1 点积

先介绍一下点积的基本求解形式2,如果给定两个向量a和b:

在这里插入图片描述
在这里插入图片描述
则它们的点积定义为:
在这里插入图片描述
其实就是两个向量的每个变量两两相乘,再相加:

/*** dot multiplication, vector * vector* */public static float dot( Vector vector1, Vector vector2 ) {return vector1.x * vector2.x + vector1.y * vector2.y;
}

点积的几何意义也很简单:向量b在a上面的投影。注意,这里也说明了点积的结果为常量,而非向量:

在这里插入图片描述
图上红色部分即为v(3,4)在v(8,0)上面的投影,至于点积的其他内容,请参看上面提到的文章。

5.2 叉积

叉积的一般计算求解需要用到矩阵乘法,而后面涉及的几何求交主要是二维坐标,所以这里直接介绍二维坐标的乘法:即x和y交叉相乘,再相减。

/*** cross multiplication,  vector x vector* */public static float cross( Vector vector1, Vector vector2 ) {return vector1.x * vector2.y - vector1.y * vector2.x;
}

叉积的几何意义相对复杂一些:1)其模等于两个向量所组成的平行四边形的面积;2)方向为垂直于两个向量所在平面。所以叉积和点积不一样,叉积的结果是向量,而不是常量。大家可以看下面图示2来理解:

在这里插入图片描述

6. 模的求解

模的求解最简单的方法就是两点之间的距离公式,这点我们从上面的向量几何意义就能看出来,但是这样计算太复杂了。还记得我们说过向量可以自由平移么?那么为何不把向量平移到原点,然后再计算其模呢?通过这样的处理,一个向量的模可以使用其坐标直接求解,而不用两点间的距离公式:

/*** vector's norm, but without radical* */public float normWithoutRadical() {return x * x + y * y;
}/*** vector's norm* */public float norm() {return ( float ) Math.sqrt( normWithoutRadical() );
}

norm()是开方之后的结果,normWithoutRadical()则没有开方,后面两个都有用到,因为有些时候我们不需要开方,可以减少浮点数计算误差。

通过这样,我们可以求得向量的模。我们最后再提一下一个概念:单位向量(e),即模为1的向量。那么,给定一个向量如何求得e呢?其实很简单:

e(a, c) = v(a, b) / |v(a, b)|

也就是向量除以它的模,即为每个单位的向量。

好啦,向量先复习到这里,以后有遇到更多知识再来讲解哒~接下来,我们将开始正式讲解两种几何求交的问题:直线和直线,圆和直线。


几何求交(一):直线和直线的交点

几何求交(二):直线和圆的交点

7. 附录:代码

  1. 代码:Vector.java
  2. 项目代码:Algorithm Repository

8. 免责声明

※ 本文之中如有错误和不准确的地方,欢迎大家指正哒~
※ 此项目仅用于学习交流,请不要用于任何形式的商用用途,谢谢呢;


在这里插入图片描述


  1. 向量 ↩︎ ↩︎ ↩︎

  2. 向量内积(点乘)和外积(叉乘)概念及几何意义 ↩︎ ↩︎


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

相关文章

向量的基本运算专题

关于向量 高中数学必修 4 4 4说: 几何向量是线性空间中有大小与方向的量。 放图理解一下: 如上图所示,向量可以形象的用一根箭头表示。箭头所指代表向量的方向,线段的长度代表向量的大小。 在 O I OI OI中,我们简化了一下向量的…

向量加减法

常用向量&#xff1a; 2D向量 v < x , y > 3D向量 v < x , y , z > 4D向量 v < x , y , z , w > (也称作齐次坐标) 向量加减法&#xff0c;各维度都是类似的。 向量加法&#xff1a; 向量加法的和就是以两个向量的边作为平行四边形长边的对角线表示 …

两个向量的点乘和叉乘怎么算_数学基础 —— 向量运算:点乘和叉乘

向量的点乘:a * b 公式&#xff1a;a * b |a| * |b| * cosθ 点乘又叫向量的内积、数量积&#xff0c;是一个向量和它在另一个向量上的投影的长度的乘积&#xff1b;是标量。 点乘反映着两个向量的“相似度”&#xff0c;两个向量越“相似”&#xff0c;它们的点乘越大。 向量…

向量的运算

向量 有大小&#xff0c;有方向的量&#xff0c;记为 a ⃗ \vec{a} a 基本运算 向量的加法 首尾相连法则(当然还有其他名字:平行四边形法则、三角形法则) 如图 a ⃗ b ⃗ \vec{a}\vec{b} a b 就相当于将 b ⃗ \vec{b} b 的起点平移到 a ⃗ \vec{a} a 的终点( a ⃗ 、 b ⃗…

数学基础 —— 向量运算(叉乘)

向量的叉乘&#xff0c;即求同时垂直两个向量的向量&#xff0c;即c垂直于a&#xff0c;同时c垂直于b&#xff08;a与c的夹角为90&#xff0c;b与c的夹角为90&#xff09; c ab &#xff08;a.y*b.z-b.y*a.z , b.x*a.z-a.x*b.z , a.x*b.y-b.x*a.y&#xff09; 以上图为例a…

向量化运算

向量化运算OLAP Clickhouse、dorisDB(starrocks)、spark(2.x以后)、 hive&#xff08;0.13.0以后&#xff09;、presto SIMD SIMD全称Single Instruction Multiple Data&#xff0c;单指令多数据流&#xff0c;能够复制多个操作数&#xff0c;并把它们打包在大型寄存器的一组…

常用的几种向量运算法则

a ⋅ b b ⋅ a ab ba a⋅bb⋅a a ( b ⋅ c ) ≠ ( a ⋅ b ) c a(bc)≠(ab)c a(b⋅c)​(a⋅b)c ( a b ) ⋅ c a ⋅ c b ⋅ c (ab)c acbc (ab)⋅ca⋅cb⋅c a b − b a ab - ba ab−ba ( r a ) b a ( r b ) r ( a b ) , 其 中 r 是 标 量 (ra)ba(rb)r(ab),其中r是…

空间向量及其运算

平面内任意向量 p \boldsymbol{p} p都可以用两个不共线的向量 a \boldsymbol{a} a b \boldsymbol{b} b来表示&#xff0c;这是平面向量的基本定理。类似的我们定义&#xff0c;如果三个向量不共面&#xff0c;那么对空间中的任一向量 p \boldsymbol{p} p&#xff0c;存在有序实…

数学-向量运算

1、外积&#xff08;差乘&#xff09; 定义&#xff1a;向量a与b的外积ab是一个向量&#xff0c;其长度等于|ab| |a||b|sin∠(a,b)&#xff0c;其方向正交于a与b。并且&#xff0c;(a,b,ab)构成右手系。 特别地&#xff0c;0a a0 0.此外&#xff0c;对任意向量a&#xff0c…

向量

向量对数学家是数字列表 向量对程序员是数组 数学上区分向量和标量 速度和位移是向量&#xff0c;速率和长度是标量 向量的维度&#xff1a;数的个数 写法&#xff1a;横着写行向量&#xff0c;竖着写列向量 几何意义 大小&#xff1a;向量的长度 方向&#xff1a;空间中的…

MATLAB——向量的运算

文章目录 一.向量的定义&#xff1a;***向量的生成方法&#xff1a;直接输入法、冒号法和利用MATLAB函数创建三种方法。*** 二.向量元素的引用&#xff1a;三.向量的定义与赋值&#xff1a;四.向量的点积运算&#xff1a;向量的叉积&#xff1a;向量的混合积&#xff1a; 一.向…

【math】 向量运算:叉乘

文章目录 1 定义2 几何意义3 拓展应用 1 定义 cab 向量的叉乘&#xff0c;即求同时垂直两个向量的向量&#xff0c;即c垂直于a&#xff0c;且c垂直于b。 假设向量a(a.x,a.y,a.z),b(b.x,b.y,b.z),c(c.x,c.y,c.z)&#xff0c; 则cab(a.x,a.y,a.z)(b.x,b.y,b.z)(a.y * b.z - a…

了解向量运算

了解向量运算 向量运算是制作三维图形、物理和动画的基础&#xff0c;深入了解向量运算有助于充分利用 Unity 的大部分功能。下方介绍了主要的向量运算方法&#xff0c;以及将向量运算用于多种用途时的建议。 加法 两向量相加的值等于将两个向量首尾相接&#xff0c;以原向量为…

向量的基本运算

向量是什么 向量就是给定一个点A&#xff0c;连接原点到点A&#xff0c;并具有由O到A方向的连线&#xff0c;表示为 O A ⃗ \vec{OA} OA . 书本的定义&#xff1a;向量就是具有大小和方向东西。 大小(magnitude) 向量的大小(magnitude)写作 ∥ x ∥ \Vert x \Vert ∥x∥,称为…

向量运算

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

利用websocket实现群聊以及单聊

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

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

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

Netty基础,Netty实现群聊系统

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

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

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

Spring Boot使用WebSocket实现群聊

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