我有以下程序:
def eigen(a, b, c, d, e, f):
epsilon = 1E-9
a = abs(float(a*e+b*f)/float(c*e+d*f) - float(e)/float(f))
print a, epsilon
print a < epsilon
print abs((a*e+b*f)/float(c*e+d*f) - e/float(f)) < epsilon
打印:
0.0 1e-09
True
False
当a,b,c,...,f = 3, 1, 1, 3, 4, -4
我预计最后两行都打印True
因为我认为它们是公平的陈述。你能告诉我发生了什么吗?
感谢您的时间。
亲切的问候,
的Marius
答案 0 :(得分:10)
问题在于
a = abs(float(a*e+b*f)/float(c*e+d*f) - float(e)/float(f))
为a
指定一个不同的值,这会影响后面的计算:
print abs((a*e+b*f)/float(c*e+d*f) - e/float(f)) < epsilon
# ^ This is no longer the original a