欢迎大家来到IT世界,在知识的湖畔探索吧!

欢迎大家来到IT世界,在知识的湖畔探索吧!
向量是线性代数研究的基本组成部分。向量不仅仅是数学抽象;它们表示具有大小和方向的量,使其在物理学、工程学、计算机科学和数据分析等各个领域中都是必不可少的。
向量和向量类型
向量是同时具有大小和方向的数学对象。在几何上下文中,向量可以可视化为从空间中的一个点指向另一个点的箭头。例如,二维空间中的向量可以表示为 v = [x, y],其中 x 和 y 是其沿各自轴的分量。
向量的类型
向量可分为三种类型:
1. 几何向量
几何向量是表示物理空间中的量的有向线段。这些可能是你在高中物理和几何中遇到的向量。线性代数中的许多基本概念,例如空间、平面和距离,都源于对向量的几何理解。
特性:
- Magnitude:向量的长度,可以用米或千克等单位来衡量。
- Direction:向量指向的角度,可以使用其他向量或参考轴进行定义。
2. 多项式
多项式是一种可以采用多种形式的数学表达式。第一个多项式函数定义为:
第二个多项式函数定义为:
此表达式表示多个项(称为单项式)的总和。多项式符合向量的定义,因为它们可以相加以创建另一个多项式,并且还可以乘以常数以产生新的多项式。例如,多项式加法表示为:
标量乘法显示为:
绘制多项式向量、加法和标量乘法:
3. R^n 的要素
Rn 的元素由有序的实数集组成。这种表示形式在应用机器学习中至关重要,因为它是在用于开发机器学习模型的计算机系统中表示数据的标准方法。例如,R3 中的向量可以表示为:
表示包含三个维度。我们可以用标量隐含加法和乘法,如下所示:
特殊类型的矢量
- 零向量:零向量是分量全为零的向量。它通常简单地表示为 0,而不管其维度如何。例如:
2.单位向量:单位向量是具有 1 大小的向量。R3 中的单位向量示例可以是:
3.稀疏向量:稀疏向量是大多数元素为零的向量。例如,R5 中的稀疏向量可能如下所示:
4.基向量:在向量空间中,基向量是跨越空间的线性独立向量。例如,在 R3 中,标准基向量为:
5.正交向量:如果两个向量的点积为零,则它们是正交的。例如,在 R2 中:
6. 法线向量:法线是垂直于给定对象的对象。它是与另一个对象成直角相交的直线或向量。法线向量是在特定点处垂直于给定表面或曲线的向量。单位法向量是长度为 1 的法向量。
矢量尺寸和坐标系
向量可以有任意数量的维度,最常见的是 2 维笛卡尔平面和 3 维空间。2D 和 3D 矢量经常用于教学目的,因为它们可以可视化为几何对象。然而,机器学习中的许多问题涉及更高的维度,有时达到数百或数千。任意维度 n 的向量 x 的符号为:
坐标系
向量表示法中的坐标系通过指定沿每个轴的分量来定义向量在空间中的位置。
向量运算
对于向量 a = (a1, a2,…, an) 和 b = (b1, b2,…, bn):
1. 加法:
2. 减法:
在向量数学中,有几种类型的向量减法,每种类型都有不同的用途。向量减法的两种类型是:
- Standard Vector Subtraction:直接减去两个 Vector 的相应分量。
- 使用逆法:将一个向量的逆(负)添加到另一个向量。
3. 标量乘法
向量可以乘以标量(实数),标量对向量的每个分量进行缩放:
4. 点积(标量积)
两个向量的点积得到一个标量,计算公式为:
此操作对于查找向量之间的角度和确定正交性非常有用。
此结果是一个标量值,通常用于评估两个向量之间的角度以及将一个向量投影到另一个向量上。点积具有几个重要属性:
- 它是交换的:a⋅b = b⋅a
- 它是分配的:a⋅(b+c) = a⋅b + a⋅c
- 点积可以提供一种使用关系式计算两个非零向量 a 和 b 之间的角度 θ 的方法:
其中 ∥a∥ 和 ∥b∥ 是各自向量的大小(长度)。
5. 叉积(向量积)
叉积,也称为向量积,是一种在三维空间中组合两个向量的方法。它由符号 “×” 表示。当你有两个方向不在同一方向的向量 a 和 b 时(意味着它们是线性独立的),× b 的叉积 a 会得到一个垂直于 a 和 b 的新向量,这意味着它与它们形成直角(90 度)。
如果 A 和 B 是两个独立的向量,则这两个向量的叉积结果 (A x B) 垂直于两个向量,并垂直于包含这两个向量的平面。如果 2 个向量彼此垂直,我们说它们是正交的。
注: 如果两个向量不是独立的(例如,如果它们是平行的或一个向量是另一个向量的倍数),则 a × b 的叉积将为零。这意味着没有垂直于两者的唯一向量,因为它们位于同一条线上。
它表示为:
可以看到:
在这个方程中 |a|和 |b|分别等于向量 A 和 B 的大小。此外,θ 是这两个向量之间的角度。您应该注意,n 是垂直于两个向量(a 和 b)的单位向量。因此,该向量的方向是 n 的方向,其大小等于 a 和 b 的大小(|a|和 |b|)在它们之间的角度正弦上的乘积。
性能:
- 不可交换:A×B = −(B×A)
- 分配式:A×(B+C)= A×B + A×C
点积:结果为标量,测量方向的相似性。
叉积:生成向量,测量垂直于原始向量的面积和方向。
使用行列式的两个向量的叉积:
两个向量的叉积可以使用由单位向量和向量的分量形成的矩阵的行列式来计算。此方法利用行列式的属性来查找垂直于两个原始向量的向量。这是此方法的公式:
例:
计算步骤
- 设置行列式:
叉积可以表示为:
其中,i、j 和 k 分别是 x、y 和 z 方向上的单位向量。它们表示三维空间的基向量。
单位向量是具有 1 大小并指示方向的向量。在三维空间中,单位向量 i、j 和 k 分别对应于 x、y 和 z 轴。它们被定义为:
2. 展开行列式:
3. 计算 2×2 行列式:
- 对于 i:
- 对于 j:
- 对于 k:
4. 合并结果:
最终结果
因此,向量 A 和 B 的叉积为:
通过右手定则找到叉积的方向
叉积产生的向量的方向由右手定则确定。以下是它的工作原理:
- 1. 定位你的手:伸出你的右手,使你的手指指向第一个向量(比如向量 a)的方向。
- 2. 卷曲手指:旋转手腕,将手指朝第二个向量(向量 b)的方向卷曲。
- 3. 拇指指向上方:伸出拇指时,拇指将指向叉积 (a × b) 生成的向量的方向。
此结果向量垂直于由两个原始向量 a 和 b 形成的平面。
6. 幅度(长度)
向量 aa 的大小使用以下公式计算:
这给出了向量的长度。
7. 标准化
归一化向量意味着将其缩放为幅度为 1。这是通过将向量除以其大小来完成的:
8. 向量之间的角度
两个向量之间的角度是它们尾部之间的角度。可以使用点积(标量积)或叉积(向量积)找到它。但是,求向量之间角度的最常用公式涉及点积。设 a 和 b 是两个向量,θ 是它们之间的角度。
然后这里是使用点积和叉积找到它们之间角度的公式:
请注意,两个矢量之间的角度 θ始终介于 0° 和 180° 之间。
使用点积的两个向量之间的角度
要使用点积找到两个向量 a 和 b 之间的角度 θ,请执行以下步骤:
- 计算点积:计算向量 a 和 b 的点积:
2. 代入余弦公式:重新排列点积公式,表示角度的余弦:
3. 计算角度:要找到角度 θ,请取余弦值的反余弦 (arccos):
注意:如果 y = cosθ,则 θ = cos−1(y)。
注意: Cos-1 读作 “cos inverse”,称为 “inverse cosine function”。
线性代数中基本向量运算的 Python 实现
我为每个操作提供了实现,包括向量之间的角度。
import numpy as np # 1. Addition def vector_add(v1, v2): """Adds two vectors.""" return np.array(v1) + np.array(v2) # 2. Subtraction def vector_subtract(v1, v2): """Subtracts vector v2 from vector v1.""" return np.array(v1) - np.array(v2) # 3. Scalar Multiplication def scalar_multiply(scalar, vector): """Multiplies a vector by a scalar.""" return scalar * np.array(vector) # 4. Dot Product (Scalar Product) def dot_product(v1, v2): """Calculates the dot product of two vectors.""" return np.dot(np.array(v1), np.array(v2)) # 5. Cross Product (Vector Product) def cross_product(v1, v2): """Calculates the cross product of two vectors.""" return np.cross(np.array(v1), np.array(v2)) # 6. Magnitude (Length) def vector_magnitude(vector): """Calculates the magnitude of a vector.""" return np.linalg.norm(np.array(vector)) # 7. Normalization def normalize_vector(vector): """Normalizes a vector.""" magnitude = vector_magnitude(vector) return np.array(vector) / magnitude if magnitude else np.array(vector) # 8. Angle Between Vectors def angle_between(v1, v2): """Calculates the angle in degrees between two vectors.""" v1_u = normalize_vector(v1) v2_u = normalize_vector(v2) dot = dot_product(v1_u, v2_u) angle_rad = np.arccos(dot) return np.degrees(angle_rad) # Example Usage v1 = [3, 4, 0] v2 = [4, -3, 0] print('v1:', v1) print('v2:', v2) print() print("Addition:", vector_add(v1, v2)) print("Subtraction:", vector_subtract(v1, v2)) print("Scalar Multiplication (2 * v1):", scalar_multiply(2, v1)) print("Dot Product:", dot_product(v1, v2)) print("Cross Product:", cross_product(v1, v2)) print("Magnitude of v1:", vector_magnitude(v1)) print("Normalized v1:", normalize_vector(v1)) print("Angle Between Vectors:", angle_between(v1, v2), "degrees")
欢迎大家来到IT世界,在知识的湖畔探索吧!
输出:
欢迎大家来到IT世界,在知识的湖畔探索吧!v1: [3, 4, 0] v2: [4, -3, 0] Addition: [7 1 0] Subtraction: [-1 7 0] Scalar Multiplication (2 * v1): [6 8 0] Dot Product: 0 Cross Product: [0 0 -25] Magnitude of v1: 5.0 Normalized v1: [0.6 0.8 0.] Angle Between Vectors: 90.0 degrees
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/121442.html