我看到了this高级逆计算器。它将任何数字作为输入,并找到给出结果的封闭形式的建议。
例如输入:0.4633300532797865327
它返回:
sin(2*Pi*3/7)
cos(Pi*5/14)
sin(Pi*x) x=1/7
Re((-1+0*I)^(19/14))
Chebyshev1(21,x)
Chebyshev1(35,x)
Chebyshev1(7,x)
Chebyshev2(13,x)
Chebyshev2(27,x)
Chebyshev2(41,x)
fsolve(poly(cos(Pi/14)
您如何为快速查找构建索引? 如果我们想支持不同的误差范围(到实际输入值的距离)
,该怎么办?另外,我不确定我提到的工具用于其结果的语法是什么,例如什么是Chebyshev2(41,x)
或fsolve(poly(cos(Pi/14))
答案 0 :(得分:2)
我没有足够的字符,所以我回答原帖后面的评论。
完全。这不是一个微不足道的问题,但它仍是一个问题。电脑很笨,但它非常快。它不能思考,或者其他什么:但它会给你一个与问题相关的答案。如果您的问题是“10”,则需要知道去哪里以及在哪里搜索。这样的数字没有帮助,因为有一个无限的答案数量,并且您希望相应地缩小答案。
无限答案的一个简单例子是: 10 =
但是现在,你需要比其他人更多地给予一些答案。你会怎么做?具有历史,具体是用户(个人),或某个人群,或者只是每个人。
我们已经非常简单地确定了我们需要制作历史,但正如您所说:您将如何有效地完成这项工作?这是一个非常不同的问题。< / p>
这是一个例子。
在网络上注册并保存来自一堆计算器的数据。对数据进行匿名处理,以便您无法将其追溯到某个特定用户,但保存一种方式来了解该用户的具体情况。
保存用户输入以及其他一些信息(这是科学数据吗?Sociology?Politics?Stats?Linear algebra?)。整体将通过一些神经网络与输出相关联。
至于最后一部分,它将是“逆向工程”问题。平凡而且可能过于抽象地解释:如果你想要反转“10”,它将根据所做的迭代次数以及到达那里的路径知道它最常去的地方。使用您提供的其他信息(如上所述(使用Cookie或用户刚刚提供的信息),您可以缩小答案范围,以获得更好的信息!
这就是说,你要问的答案会显示在你的网站上......
反向符号计算器(ISC)使用查找表和整数关系算法的组合,以便将闭合表单表示与用户定义的截断十进制扩展(写为浮点表达式)相关联。查询表包括由S. Plouffe在其作为CECM员工期间编制的实质数据集。
答案 1 :(得分:2)
基本思想是收集可以查询的数据库。通过将输入表达式与其输出相关联,您可以在实数行上生成值列表。
在output => input
的数据库中,无法容纳每个output
和每个input
。因此,一种简单的方法是近似数据。如果query
集中不存在output
,您只需在output
中取最近的点即可。这样可行,但您需要在感兴趣的点附近获得大量样本,例如sin(pi)
。
一种简单的方法是插值。您收集每个方向上最近的样本,并大致确定每个样本对查询的影响程度。它是40:60分裂吗? 50:50?然后使用该比率将这些已知值混合在一起。不过这很简单,它不是紧密配合,往往只能用于连续线性函数。
通过引入微积分,您可以大大提高近似值。对于input
表达式中的每个参数,您可以通过稍微抵消该术语并比较原始表达式的output
和偏移表达式来修改该术语。这会产生一个具有特定斜率的线段,当您在表达式中更改该术语时,该斜率近似于该函数!
使用最近样本的斜率,您可以移动预测input
的项,使其近似于移动到查询output
所需的距离。到现在为止,你应该有更高的猜测准确性。将输出与略微偏移的输入进行比较的过程实际上是计算导数的简单形式。
通过为每个函数的参数存储导数以及输出,您可以生成非常高精度的未知点插值。尽管如此,您可能希望在每个参数域中都有许多样本,以便获得各种各样的输出。一个好的数字开始是0.001增量。值得庆幸的是,sin
等一些函数会定期重复,因此您通常只需要一个小的采样域。
为了识别具有多少采样分辨率(而不是猜测为0.001),您需要在问题中引入统计字段。
答案 2 :(得分:2)
反向符号计算器(ISC)使用查找表和integer relation algorithms的组合,以便将闭合表单表示与用户定义的截断十进制扩展(写为浮点表达式)相关联。查询表包括由S. Plouffe在其作为CECM员工期间编制的实质数据集。
来自Wolfram的另一句话:
Plouffe&#34;反向符号计算器&#34; site包含一个包含5400万个实数的庞大数据库,这些数字与基本数学常数在代数上相关。
可能使用PSLQ algorithm找到这些整数关系。另见:
答案 3 :(得分:1)
您只需要对输入执行一系列随机操作,然后您将列出所执行的每个操作,反向操作以及相反的操作。例如,假设输入为10.
10 * 3 = 30
30 - 2 = 28
28 * 5 = 140
现在,你颠倒了操作的顺序..
*3 -2 *5 => *5 -2 *3
然后你执行相反的操作..
%5 +2 %3
那么你得到以下内容:
140 / 5 = 28
28 + 2 = 30
30 / 3 = 10
您到达原来的10号。