[英]how to find cube root of 7 with Z3 library
这段代码返回了一个好的结果,但是有没有人知道如何转换这个程序以返回相同的结果,但在 Z3 求解器中???
from decimal import *
import time
getcontext().prec = 100
x = Decimal(7.0)
beg = time.time()
cuber = x**(Decimal(1)/Decimal(3))
end = time.time()
print(end-beg)
print(cuber)
z3 没有提供直接计算立方根的方法,但您可以使用简单的约束来表达它:
from z3 import *
cuber = Real('cuber')
s = Solver()
s.add(cuber * cuber * cuber == 7)
if s.check() == sat:
print(s.model())
else:
print("Not satisfiable")
运行时,打印:
[cuber = 1.9129311827?]
那个?
最后意味着这是一个近似值,即它不是精确的结果。 您可以像这样提高打印精度:
set_param(precision=100)
(在import
z3 后立即添加该行。)现在它将打印:
[cuber = 1.9129311827723891011991168395487602828624390503458757662106476404472342761792307560075254414772857099?]
它有更多的数字,但仍然不精确,因为 7 的立方根是无理数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.