Mar-26-2020, 02:53 PM
Hi guys I am trying to calculate the norm(magnitude) of a Vector using class and when i run the code I get:
Error:return math.sqrt(sum( i**2 for i in self ))
TypeError: 'Vector' object is not iterableimport math
x = 2.
y = 8.
z = 6.
class Vector(object):
def __init__(self, data):
self.data = data
self.rows = len(data)
def __mul__(self, other):
assert len(self.data) == len(other.data)
result = 0.
for vi, vj in zip(self.data, other.data):
result += vi * vj
return result
def __rmul__(self, a):
data = [a * d for d in self.data]
return Vector(data)
def __add__(self, other):
assert len(self.data) == len(other.data)
data = [i + j for (i, j) in zip(self.data, other.data)]
return Vector(data)
def norm(self):
return math.sqrt(sum( i**2 for i in self ))
def __sub__(self, other):
assert len(self.data) == len(other.data)
data = [i - j for (i, j) in zip(self.data, other.data)]
return Vector(data)
def __str__(self):
return '{0}'.format(self.data)
I = Vector([1., 1., 1.])
v = Vector([1. + x, 2. + y, 3. + z])
w = Vector([4. + x, 5. + y, 6. + z])
Final = ( 2 * v - w ) + w.norm() * I
print(Final.data)
