Logarithm/Exponential cvc4 中的实数
Logarithm/Exponential of real numbers in cvc4
我正在寻找可以提供涉及对数或指数的实数公式模型的求解器。
cvc4 可以处理包含实数的对数或指数的函数吗? 同样,cvc4 可以表示常数 e
吗?
根据this question,z3只能处理常数指数,这对我没有帮助。
This question 只询问整数的对数。
我不熟悉 cvc4,但我可能有一些关于对数的有用属性,您可以根据自己的限制加以利用。
从技术上讲,没有计算机(无论多么强大)知道e
是什么,因为它是超越的(不能表示为具有有理系数的多项式方程的解)。
如果您的能力有限,只能对整数取对数,则可以将 e
表示为派系近似值,并以此方式求解。该公式最终比直接取对数要长一些,但优点是您可以有效地计算底数为任何有理数的对数,而只单独求整数的对数。
让e
近似为分数a/b
,其中a
和b
都是整数。
(a/b)^n = x
log(base a/b)(x) = n
这并不能真正带你到任何地方,所以我们必须采取不同的路线,这需要更多的代数知识。
(a/b)^n = x
(a^n)/(b^n) = x
a^n = x * b^n
log(base a)(x * b^n) = n
log(base a)(x) + log(base a)(b^n) = n
log(base a)(x) + n*log(base a)(b) = n
log(base a)(x) = n - n*log(base a)(b)
log(base a)(x) = n * (1 - log(base a)(b))
n = log(base a)(x) / (1 - log(base a)(b))
换句话说,log(base a)(x) / (1 - log(base a)(b))
是 ln(x)
的近似值,其中 a/b
是 e
的近似值。显然,ln(x)
的这个近似值更接近 ln(x)
的实际值,因为 a/b
更接近 e
。请注意,我在这里以一般形式保留它,即 a/b
可以表示任何有理数,而不仅仅是 e
.
如果这不能完全回答您的问题,我希望它至少能有所帮助。
只是试了一个任意的例子。
如果您将 a
和 b
分别视为 27183
和 10000
,我尝试了这个快速计算:
log(base 27183)(82834) / (1 - log(base 27138)(10000)) = 11.32452...
ln(82834) = 11.32459...
我正在寻找可以提供涉及对数或指数的实数公式模型的求解器。
cvc4 可以处理包含实数的对数或指数的函数吗? 同样,cvc4 可以表示常数 e
吗?
根据this question,z3只能处理常数指数,这对我没有帮助。
This question 只询问整数的对数。
我不熟悉 cvc4,但我可能有一些关于对数的有用属性,您可以根据自己的限制加以利用。
从技术上讲,没有计算机(无论多么强大)知道e
是什么,因为它是超越的(不能表示为具有有理系数的多项式方程的解)。
如果您的能力有限,只能对整数取对数,则可以将 e
表示为派系近似值,并以此方式求解。该公式最终比直接取对数要长一些,但优点是您可以有效地计算底数为任何有理数的对数,而只单独求整数的对数。
让e
近似为分数a/b
,其中a
和b
都是整数。
(a/b)^n = x
log(base a/b)(x) = n
这并不能真正带你到任何地方,所以我们必须采取不同的路线,这需要更多的代数知识。
(a/b)^n = x
(a^n)/(b^n) = x
a^n = x * b^n
log(base a)(x * b^n) = n
log(base a)(x) + log(base a)(b^n) = n
log(base a)(x) + n*log(base a)(b) = n
log(base a)(x) = n - n*log(base a)(b)
log(base a)(x) = n * (1 - log(base a)(b))
n = log(base a)(x) / (1 - log(base a)(b))
换句话说,log(base a)(x) / (1 - log(base a)(b))
是 ln(x)
的近似值,其中 a/b
是 e
的近似值。显然,ln(x)
的这个近似值更接近 ln(x)
的实际值,因为 a/b
更接近 e
。请注意,我在这里以一般形式保留它,即 a/b
可以表示任何有理数,而不仅仅是 e
.
如果这不能完全回答您的问题,我希望它至少能有所帮助。
只是试了一个任意的例子。
如果您将 a
和 b
分别视为 27183
和 10000
,我尝试了这个快速计算:
log(base 27183)(82834) / (1 - log(base 27138)(10000)) = 11.32452...
ln(82834) = 11.32459...