我如何用Python编写这个等式?

Den*_*neb 5 python python-2.7

卡尔达诺三胞胎

我真的不知道怎么写这个.这是我尝试的方式:

def is_cardano_triplet(a, b, c):
    f = lambda x: x ** 1. / 2
    g = lambda x: x ** 1. / 3
    return g(a + b*f(c)) + g(a - b*f(c)) == 1

print is_cardano_triplet(2,1,5) # I should get True
Run Code Online (Sandbox Code Playgroud)

我应该得到True2, 1, 5,但我不是.我的功能出了什么问题?

Mar*_*lli 6

做了一些计算,我发现:

LOLZ

因此:

lolzz

现在,由于已知原因浮点运算对基于二进制的系统不精确,第一个公式很难精确计算.但是,第二个更容易计算而没有浮点精度误差,因为它不涉及无理函数a,b并且c是整数.

这是智能解决方案:

def is_cardano_triplet(a, b, c):
    return (a + 1)**2 * (8*a - 1) - 27*b**2*c == 0

>>> is_cardano_triplet(2, 1, 5)
True
Run Code Online (Sandbox Code Playgroud)