Python 获取向量的大小(x,y)
我很难让它起作用,因为我能找到的所有答案都更多地集中在numpy数组中的向量上,而不像我在类(OOP)中的答案。(我希望我的措辞是正确的,如果我没有,请原谅) 我想求一个向量(x,y)的大小,下面是我的代码:Python 获取向量的大小(x,y),python,python-2.7,oop,vector,Python,Python 2.7,Oop,Vector,我很难让它起作用,因为我能找到的所有答案都更多地集中在numpy数组中的向量上,而不像我在类(OOP)中的答案。(我希望我的措辞是正确的,如果我没有,请原谅) 我想求一个向量(x,y)的大小,下面是我的代码: class Vector(object): def __init__(self, x, y): self.x = x self.y = y 我有两个向量的求和和和减法的代码,但是如何用这个方程得到大小: 幅值=数学sqrt(和(矢量中v的v**2
class Vector(object):
def __init__(self, x, y):
self.x = x
self.y = y
我有两个向量的求和和和减法的代码,但是如何用这个方程得到大小:
幅值=数学sqrt(和(矢量中v的v**2))
这是我的代码,但它没有提供我需要的:
def vector_mag(self):
x_vector = self.x
y_vector = self.y
vector = (x_vector, y_vector)
magnitude = math.sqrt(sum(v**2 for v in vector))
return Vector(magnitude)
这会产生一个错误,表示:
第22行,在
打印vector.vector_mag()
第14行,矢量图
返回向量(幅值)
TypeError:init()正好接受3个参数(给定2个)
所以当我在返回部分添加另一个“字符串”时,就像这样…:
返回向量(“向量幅值为:”,幅值)
…程序运行,但给出了一个奇怪的结果
我做错了什么
这是我的“完整”代码:
输入数学
类向量(对象):
向量1=向量(10,1)
向量2=向量(20,2)
向量列表=[(向量1),(向量2)]
对于向量列表中的向量:
print vector.vector_mag()
向量的大小是一个标量值;换句话说,这是一个单一的数字。向量是数字的集合,因此尝试将标量转换为向量是没有意义的。只需返回不变的大小
return magnitude
您可以这样定义
vector\u mag
:
def __abs__(self):
return (self.x ** 2 + self.y ** 2) ** 0.5
那么调用您的方法就很容易了,如下所示:
vector1 = Vector(10, 1)
print 'Magnitude =', abs(vector1)
出于准确性原因,您应该使用以避免任何溢出
from math import hypot
def __abs__(self):
return hypot(self.x, self.y)
hypot(x,y):返回欧几里德范数sqrt(xx+yy)。这是向量从原点到点(x,y)的长度
这将使:
from math import hypot
class Vector(object):
def __init__(self, x, y):
self.x = x
self.y = y
def __abs__(self):
return hypot(self.x, self.y)
v=Vector(3,1)
magnitude = abs(v)
为什么要从
vector\u mag
调用返回另一个向量?是不是,嗯,一个号码?你说得对,图卡斯,我在那里太蠢了,谢谢:)谢谢@Kevin,我得赶快从房子里出来,我会尽快尝试,但我想我已经尝试过了。我会更新你的短作品!谢谢你@Kevin谢谢你的时间@Noctis,我马上试试!作品再次感谢@NoctisWow,这非常有用,谢谢@Guillaume。我会尽快更新!干杯:)
from math import hypot
def __abs__(self):
return hypot(self.x, self.y)
from math import hypot
class Vector(object):
def __init__(self, x, y):
self.x = x
self.y = y
def __abs__(self):
return hypot(self.x, self.y)
v=Vector(3,1)
magnitude = abs(v)