vector模拟实现
发布人:shili8
发布时间:2024-12-26 22:05
阅读次数:0
**Vector 模拟实现**
在计算机科学中,向量(Vector)是指一组数字的集合,每个数字代表一个维度。向量可以用来表示空间中的位置、速度、加速度等物理量,也可以用来表示数据的特征,如图像或音频信号的颜色和强度。
在本文中,我们将模拟实现一个基本的向量类,支持常见的向量运算,如加法、减法、点积(Dot Product)、叉积(Cross Product)等。
### 向量类定义
import mathclass Vector: def __init__(self, *args): """ 初始化向量对象 :param args: 向量的维度值,支持多个参数 """ self.dim = len(args) self.values = list(args) def __str__(self): return f"Vector({', '.join(map(str, self.values))})" def __add__(self, other): """ 向量加法 :param other: 另一个向量对象 :return:两个向量的和 """ if self.dim != other.dim: raise ValueError("向量维度不一致") return Vector(*[a + b for a, b in zip(self.values, other.values)]) def __sub__(self, other): """ 向量减法 :param other: 另一个向量对象 :return:两个向量的差值 """ if self.dim != other.dim: raise ValueError("向量维度不一致") return Vector(*[a - b for a, b in zip(self.values, other.values)]) def dot_product(self, other): """ 点积运算 :param other: 另一个向量对象 :return:两个向量的点积值 """ if self.dim != other.dim: raise ValueError("向量维度不一致") return sum(a * b for a, b in zip(self.values, other.values)) def cross_product(self, other): """ 叉积运算 :param other: 另一个向量对象 :return:两个向量的叉积值 """ if self.dim !=3 or other.dim !=3: raise ValueError("仅支持三维向量") return Vector(self.values[1]*other.values[2] - self.values[2]*other.values[1], self.values[2]*other.values[0] - self.values[0]*other.values[2], self.values[0]*other.values[1] - self.values[1]*other.values[0])
###例子
# 创建两个向量对象v1 = Vector(1,2,3) v2 = Vector(4,5,6) # 向量加法print(v1 + v2) # Vector(5,7,9) # 向量减法print(v1 - v2) # Vector(-3, -3, -3) # 点积运算print(v1.dot_product(v2)) #32# 叉积运算(仅支持三维向量) v3 = Vector(7,8,9) print(v1.cross_product(v3)) # Vector(-15,6, -12)
本文模拟实现了一个基本的向量类,支持常见的向量运算,如加法、减法、点积和叉积等。通过例子展示了如何使用这个类来进行向量运算。