求向量的模的python实现的问题

来源:3-2 实现向量规范化

百里守约

2019-01-16

bobo老师好!
您的代码没有考虑溢出的问题

    def norm(self):
        """返回向量的模"""
        return math.sqrt(sum(e**2 for e in self))

是不是这样更好,但norm2()看起来变慢了。

    def norm2(self):
        """返回向量的模"""
        _max = max(abs(e) for e in self)
        return _max * math.sqrt(sum((e/_max)**2 for e in self))
写回答

1回答

liuyubobobo

2019-01-16

赞!


不过由于Python语言本身对于整型的溢出限制非常宽松。所以通常在Python中不太处理溢出问题。不信的话,计算一下2**1000试试看:) 


甚至试一下2**10000;2**100000;2**1000000:)

2
1
百里守约
谢谢老师!的确可以。2**1000=10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
2019-01-16
共1条回复

结合编程学数学 专为程序员设计的线性代数

创新设计,通俗易懂。编程结合数学,bobo带你彻底征服线性代数

3417 学习 · 376 问题

查看课程