2015-11-17 97 views
3

我在python中爲矢量和矢量添加了一個類;然而,它似乎並沒有產生我期望的結果。矢量添加不能正常工作

向量的方向爲pi(弧度)或180(度),幅值爲1加上方向爲pi * 2(弧度)或0/360(度)且幅度爲1的向量應該做一個向量(0,0),是否正確?但是,我從代碼中得到了奇怪的結果。

(-1.5707963267948966,1.2246467991473532e-16)

這是我的結果從I描述的上述矢量相加得到的。

這裏是我的代碼:

import math 

class Vector: 
    def __init__(self, direction, magnitude, directionType="degrees"): 
     if directionType=="degrees": 
      direction = math.radians(direction) 
     self.direction = direction 
     self.magnitude = magnitude 

    def __add__(self, other): 
     x = (math.sin(self.direction) * self.magnitude) + (math.sin(other.direction) * other.magnitude) 
     y = (math.cos(self.direction) * self.magnitude) + (math.cos(other.direction) * other.magnitude) 
     magnitude = math.hypot(x, y) 
     direction = 0.5 * math.pi - math.atan2(y, x) 
     return (direction, magnitude) 



v1 = Vector(math.pi, 1, directionType="radians") 
v2 = Vector(math.pi*2, 1, directionType="radians") 

print v1+v2 
+3

你有一個(大約)0的數量級。那不正是你所期望的嗎? – Batman

回答

2

1.22E-16是一個非常小的數目。如果您不喜歡看到它,請將您的數字放在合理的精確度上,它將爲零。我不希望角度可以預測,在這種情況下,它似乎是pi/2。小數點後10位的四捨五入示例:

angle, magnitude= v1+v2 
magnitude = round(magnitude, 10) 
result = (angle, magnitude) 
print(result)