簡體   English   中英

truncate(7^sqrt(8)-8^sqrt(7)) 可以通過 CLP(FD) 解決嗎?

[英]can truncate(7^sqrt(8)-8^sqrt(7)) be solved via CLP(FD)?

CLP(FD) 是一個很棒的 Prolog工具 它將 Prolog 的大量擴展到約束和標簽。 但它是通用的嗎? 例如,我們可以找出這個整數值:

 truncate(7^sqrt(8)-8^sqrt(7)) = ?

Prolog CLP(FD) 解決方案是什么樣的? 或者是否有其他推薦的方法來確定答案,例如 CLP(?) 或其他什么?

使用浮點運算,我們可能無法 100% 確定截斷結果是什么。 通過浮點數,我們得到一個近似值 x~,它可能與真實的 x 有偏差:

SWI-Prolog (threaded, 64 bits, version 8.1.21)

?- X is 7, Y is 8, Z is X**sqrt(Y)-Y^sqrt(X).
X = 7,
Y = 8,
Z = 0.5348772168447056.

通過使用區間算法,我們可以獲得更多的信心。 如果區間算術結果指向區間 [x1,x2],那么我們肯定知道真正的 x 在這個區間內:

ECLiPSe Version 7.0 #52 (x86_64_nt)

?- X is breal(7), Y is breal(8), Z is X^sqrt(Y)-Y^sqrt(X).
X = 7.0__7.0
Y = 8.0__8.0
Z = 0.534877216844194__0.53487721684518874

由於區間完全在 [0,1) 內,截斷將為零。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM