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 iterable
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
import 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) |