当前位置:实例文章 » JAVA Web实例» [文章]模拟实现vector类

模拟实现vector类

发布人:shili8 发布时间:2025-02-10 19:30 阅读次数:0

**Vector 类模拟实现**
=====================在本文中,我们将模拟实现一个 `Vector` 类,支持基本的向量运算,如加法、减法、点积等。我们将使用 Python语言来实现这个类。

### Vector 类定义

class Vector:
 def __init__(self, *args):
 """
 初始化方法,接受任意数量的数字作为参数。
 :param args: 数字列表 """
 self.data = list(args)


在 `__init__` 方法中,我们使用 `*args` 来接收任意数量的数字作为参数,并将它们存储在 `self.data` 列表中。

### 加法运算
def __add__(self, other):
 """
 实现加法运算,要求两个向量具有相同维度。
 :param other: 另一个 Vector 对象 :return:两个向量的和 """
 if len(self.data) != len(other.data):
 raise ValueError("两者必须具有相同维度")
 return Vector(*[a + b for a, b in zip(self.data, other.data)])


在 `__add__` 方法中,我们首先检查两个向量是否具有相同维度。如果不相同,则抛出异常。否则,我们使用列表推导式来计算两个向量的和,并返回一个新的 `Vector` 对象。

### 减法运算
def __sub__(self, other):
 """
 实现减法运算,要求两个向量具有相同维度。
 :param other: 另一个 Vector 对象 :return:两个向量的差值 """
 if len(self.data) != len(other.data):
 raise ValueError("两者必须具有相同维度")
 return Vector(*[a - b for a, b in zip(self.data, other.data)])


`__sub__` 方法与 `__add__` 方法类似,但计算的是两个向量的差值。

### 点积运算
def dot(self, other):
 """
 计算两个向量的点积。
 :param other: 另一个 Vector 对象 :return:两个向量的点积 """
 if len(self.data) != len(other.data):
 raise ValueError("两者必须具有相同维度")
 return sum(a * b for a, b in zip(self.data, other.data))


在 `dot` 方法中,我们使用 `zip` 函数来将两个向量的元素对应起来,然后使用列表推导式和 `sum` 函数来计算点积。

### 向量长度
def length(self):
 """
 计算向量的长度。
 :return: 向量的长度 """
 return sum(a **2 for a in self.data) **0.5


在 `length` 方法中,我们使用列表推导式和 `sum` 函数来计算向量的平方和,然后取平方根得到向量的长度。

### 示例代码
v1 = Vector(3,4)
v2 = Vector(5,6)

print(v1 + v2) # (8,10)
print(v1 - v2) # (-2, -2)
print(v1.dot(v2)) #23print(v1.length()) #5.0


在示例代码中,我们创建两个 `Vector` 对象 `v1` 和 `v2`,然后使用加法、减法和点积运算来演示 `Vector` 类的基本功能。

其他信息

其他资源

Top