向量的加法
- 向量加法:



向量加法就是通过平移向量,原点到最终终点的距离。结果是,下面是结果步骤
- 先向X移动5个单位
- 再向y移动2个单位
- 再向y移动5个单位
- 总共向x移动了7个单位
- 总共向y移动了7个单位
三维向量同理到N维向量是同理的
向量的乘法
向量的乘法:


-
其实就是2次(5,2)的向量进行相加
-
n维向量同理
用Python代码实现向量的运算操作
class Vector:
def __init__(self, my_list):
self._values = my_list
def __add__(self, other):
"""向量的加法,返回结果向量"""
assert len(self) == len(other), \
"向量的长度错误,向量之间长度必须是相等的"
return Vector([a + b for a, b in zip(self, other)])
def __sub__(self, other):
"""向量的减法, 返回结果向量"""
assert len(self) == len(other), \
"向量的长度错误,向量之间长度必须是相等的"
return Vector([a - b for a, b in zip(self, other)])
def __mul__(self, other):
"""返回数量乘法的结果向量, 只定义了self * other"""
return Vector([other * e for e in self])
def __rmul__(self, other):
"""返回向量的右乘方法, 只定义了 other * self"""
return Vector([other * e for e in self])
def __pos__(self):
"""返回向量取正的结果向量"""
return 1 * self
def __neg__(self):
"""返回向量取负的向量结果"""
return -1 * self
def __iter__(self):
"""返回向量的迭代器"""
return self._values.__iter__()
def __getitem__(self, item):
"""取向量的第index元素"""
return self._values[item]
def __len__(self):
"""返回向量的长度"""
return len(self._values)
def __repr__(self):
return "Vector ({})".format(self._values)
def __str__(self):
return "({})".format(", ".join(str(e) for e in self._values))
if __name__ == '__main__':
vec = Vector([5, 2])
print(vec) # 1
print(len(vec)) # 2
vec2 = Vector([3, 1])
print("{} + {} = {}".format(vec, vec2, vec + vec2)) # 3
print("{} - {} = {}".format(vec, vec2, vec - vec2)) # 4
print("{} * {} = {}".format(vec, 3, vec * 3)) # 5
print("{} * {} = {}".format(3, vec, 3 * vec)) # 6
print("+{} = {}".format(vec, +vec)) # 7
print("-{} = {}".format(vec, -vec)) # 8
返回结果
(5, 2) # 1
2 # 2
(5, 2) + (3, 1) = (8, 3) # 3
(5, 2) - (3, 1) = (2, 1) # 4
(5, 2) * 3 = (15, 6) # 5
3 * (5, 2) = (15, 6) # 6
+(5, 2) = (5, 2) # 7
-(5, 2) = (-5, -2) # 8
网友评论