如何计算向量(将其自身按设定次数计算)?

时间:2015-06-05 06:20:07

标签: python vector

如何计算向量因子,所以取一个向量并自行乘以多次。我试过了vec=vector**4,但得到了:

  

运行时错误(TypeErrorException):**不支持的操作数类型:' Vector3d'和' int'

1 个答案:

答案 0 :(得分:1)

假设Vector3d是您自己设计的类型,则需要明确添加对**的支持。

如果查看Emulating numeric types的文档,您会发现需要编写的方法是:

object.__pow__(self, other[, modulo])

如果您对第三个参数感到困惑,__pow__不仅用于**运算符,还用于pow函数,它带有可选的第三个参数用于模幂运算。如果您不想支持,可以忽略它。

现在,您如何实现向量求幂?好吧,如果你只关心整数权力,你总是可以通过重复的交叉产品来做到这一点。假设您已将*运算符定义为跨产品:

class Vector3d(object):
    # ... other methods ...
    def __pow__(self, power):
        if not isinstance(power, numbers.Integral) or other < 0:
            # give power.__rpow__ a chance, just in case...
            return NotImplemented
        result = type(self)(1, 1, 1)
        for _ in range(power):
            result *= self
        return result

如果你想能够将向量提升到真实,复杂或向量的力量,那么有几种不同的方法来定义这些东西,如果你不知道你想要哪一种,你可能需要在Math而不是StackOverflow上询问它。