2
我使用以下代码:如何在x = 1时使用Z3RCF-Py来证明diff(x^2,x)= 2?
eps = MkInfinitesimal()
print(((1 + eps)**2- 1**2)/eps < 2.00000000001)
print(((1 + eps)**2- 1**2)/eps > 2)
并且输出是:
True
True
其他例如:这证明了DIFF(X^2,X)= 2 * PI当x = pi和差异(X^2,X)= 2 * E当x = E
代码:
eps1 = MkInfinitesimal()
eps2 = MkInfinitesimal() # eps2 is infinitely smaller thant eps1
pi = Pi()
e = E()
print(((pi + eps2)**2- pi**2)/eps2 < 2*pi + eps1)
print(((pi + eps2)**2- pi**2)/eps2 > 2*pi)
print(((e + eps2)**2- e**2)/eps2 < 2*e + eps1)
print(((e + eps2)**2- e**2)/eps2 > 2*e)
输出:
True
True
True
True
其他示例:证明当x = e或x = pi时,diff(x^3,x)= 3 * x^2。
代码:
eps1 = MkInfinitesimal()
eps2 = MkInfinitesimal() # eps2 is infinitely smaller thant eps1
pi = Pi()
e = E()
print(((pi + eps2)**3- pi**3)/eps2 < 3*pi**2 + eps1)
print(((pi + eps2)**3- pi**3)/eps2 > 3*pi**2)
print(((e + eps2)**3- e**3)/eps2 < 3*e**2 + eps1)
print(((e + eps2)**3- e**3)/eps2 > 3*e**2)
输出:
True
True
True
True
其它示例:
代码:
[x] = MkRoots([-1, -1, 0, 0, 0, 1])
[y] = MkRoots([-197, 3131, -31*x**2, 0, 0, 0, 0, x])
[z] = MkRoots([-735*x*y, 7*y**2, -1231*x**3, 0, 0, y])
print(x.decimal(10))
print(y.decimal(10))
print(z.decimal(10))
eps1 = MkInfinitesimal()
eps2 = MkInfinitesimal() # eps2 is infinitely smaller thant eps1
print(((x + eps2)**2- x**2)/eps2 < 2*x + eps1)
print(((x + eps2)**2- x**2)/eps2 > 2*x)
print(((y + eps2)**2- y**2)/eps2 < 2*y + eps1)
print(((y + eps2)**2- y**2)/eps2 > 2*y)
print(((z + eps2)**2- z**2)/eps2 < 2*z + eps1)
print(((z + eps2)**2- z**2)/eps2 > 2*z)
输出:
1.1673039782?
0.0629726948?
31.4453571397?
True
True
True
True
True
True
这个证明是正确的?如果你知道更好的证据,请告诉我。非常感谢。
这是正确的。您正在检查:((1 + esp)** 2 - 1)/ eps =(2 * eps + eps ** 2)/ eps = 2 + eps对于任何eps!= 0都不同于2,因此如果eps > 0,第二个结果成立。由于eps是无穷小的,它小于2以上的任何有限精度数字。 –