Python求三维向量夹角余弦

引言

三维向量是计算机图形学、物理学、机器学习等领域中常用的概念。在这些领域中,我们经常需要计算两个三维向量之间的夹角余弦。本文将介绍如何使用Python编程语言来计算三维向量之间的夹角余弦,并提供代码示例。

三维向量

三维向量是由三个实数组成的有序集合,通常表示为 (x, y, z)。在计算机中,我们可以使用列表、元组或者自定义的向量类来表示三维向量。下面是使用列表表示的三维向量的例子:

vector1 = [1, 2, 3]
vector2 = [4, 5, 6]

夹角余弦

夹角余弦是一个用来度量两个向量方向相似程度的值。夹角余弦的取值范围是 -11,其中 -1 表示两个向量完全相反,1 表示两个向量完全相同,0 表示两个向量互相垂直。

夹角余弦可以通过向量的内积和向量的长度来计算。给定两个向量 uv,它们之间的夹角余弦可以通过下面的公式计算:

cosθ = (u · v) / (||u|| ||v||)

其中,u · v 表示向量 u 和向量 v 的内积,||u||||v|| 分别表示向量 u 和向量 v 的长度。

代码示例

下面是使用Python编程语言计算三维向量夹角余弦的代码示例:

import math

def dot_product(vector1, vector2):
    return sum(x * y for x, y in zip(vector1, vector2))

def vector_length(vector):
    return math.sqrt(sum(x ** 2 for x in vector))

def angle_cosine(vector1, vector2):
    dot = dot_product(vector1, vector2)
    length1 = vector_length(vector1)
    length2 = vector_length(vector2)
    return dot / (length1 * length2)

vector1 = [1, 2, 3]
vector2 = [4, 5, 6]

cosine = angle_cosine(vector1, vector2)
print(cosine)

在上面的代码示例中,我们首先定义了三个函数:

  • dot_product:用于计算两个向量的内积。
  • vector_length:用于计算一个向量的长度。
  • angle_cosine:用于计算两个向量之间的夹角余弦。

然后,我们定义了两个三维向量,并调用 angle_cosine 函数来计算它们之间的夹角余弦。最后,我们将结果打印出来。

类图

下面是使用Mermaid语法绘制的三维向量类的类图:

classDiagram

class Vector3D {
  +__init__(x: float, y: float, z: float)
  +__str__(): str
  +__add__(other: Vector3D): Vector3D
  +__sub__(other: Vector3D): Vector3D
  +__mul__(scalar: float): Vector3D
  +__rmul__(scalar: float): Vector3D
  +__eq__(other: Vector3D): bool
  +dot_product(other: Vector3D): float
  +cross_product(other: Vector3D): Vector3D
  +length(): float
  +normalize(): Vector3D
}

上面的类图描述了一个名为 Vector3D 的三维向量类。它包含了一些常用的操作,如向量的加法、减法、乘法、内积、叉积、长度和归一化。

状态图

下面是使用Mermaid语法绘制的三维向量类的状态图:

stateDiagram

[*] --> Normal

Normal --> Normal: add / sub
Normal --> Scaled: mul / rmul
Normal --> Zero: length = 0
Normal --> Unit: length =