Algorithm 对于给定整数序列的闭式函数,有哪些算法?

Algorithm 对于给定整数序列的闭式函数,有哪些算法?,algorithm,language-agnostic,math,Algorithm,Language Agnostic,Math,我正在寻找一种编程方法,以获取一个整数序列,并输出一个封闭形式的函数。比如: 给定值:1,3,6,10,15 返回:n(n+1)/2 样本可能有用;语言不重要。我认为你的问题是病态的。给定序列中任意有限个整数 没有生成函数,下一个元素可以是任何东西 你需要对序列做一些假设。它是几何图形吗?算术?如果您的数据保证可以表示为多项式,我认为您可以使用(或任何提供数据回归拟合的套件)。如果相关性正好为1,那么这条线非常适合描述该系列 回归分析中有很多统计数据,我对计算的基础知识都不太熟悉,无法提供更多细

我正在寻找一种编程方法,以获取一个整数序列,并输出一个封闭形式的函数。比如:

给定值:1,3,6,10,15

返回:n(n+1)/2


样本可能有用;语言不重要。

我认为你的问题是病态的。给定序列中任意有限个整数 没有生成函数,下一个元素可以是任何东西


你需要对序列做一些假设。它是几何图形吗?算术?

如果您的数据保证可以表示为多项式,我认为您可以使用(或任何提供数据回归拟合的套件)。如果相关性正好为1,那么这条线非常适合描述该系列

回归分析中有很多统计数据,我对计算的基础知识都不太熟悉,无法提供更多细节


但是,

这涉及到一个极其深刻、复杂和活跃的数学领域。在某些情况下(线性复发),解决方案几乎是微不足道的,而在其他情况下(想想2、3、5、7、11、13等等),解决方案几乎是不可能的。你可以先看看赫伯·威尔夫(Herb Wilf)关于这个问题的书(参见第1(2e)页),但这只会让你走到这一步

但我认为你最好的选择是放弃,当你需要知道答案时,质疑斯隆的综合性,而不是花时间阅读这一深奥主题中最古怪的人物之一的文章

任何告诉你这个问题可以解决的人都是在向你出售蛇油(参见Wilf书(2e)第118页)。

一般来说,没有一种功能

对于指定的序列,在其感兴趣的整数序列数据库中查找133个匹配项。我在这里复制了前5个

三角形数:a(n)=C(n+1,2)=n(n+1)/2=0+1+2+…+n.
0、1、3、6、10、15、21、28、36、45、55、66、78、91、105、120、136、153、171、190、210、231、253、276、300、325、351、378、406、435、465、496、528、561、595、630、666、703、741、780、820、861、903、946、990、1035、1081、1128、1176、1225、1326、1378、1431


求和{0如果您的序列来自多项式,则除以差将发现该多项式以牛顿基或二项式基表示。请参阅。

Axiom计算机代数系统包含一个用于此目的的软件包。您可以

以下是FriCAS(Axiom的分支)中示例序列的输出:


没有一般的答案;可以使用一个简单的方法来实现;换句话说,假设您的序列是未知函数泰勒展开的系数序列,然后应用一个算法(类似于连分数算法)来“简化”这个泰勒展开(更准确地说:找到一个非常接近初始(和截断)函数的有理函数。Maxima程序可以做到:查看页面上的“pade”:


另一个答案是关于Axiom的FriCAS fork中的“guess”包(参见jmbr之前的答案)。如果我没有错的话;这个软件包本身就是从Christian Krattenthaler的Rate程序中得到启发的;你可以在这里找到它:也许通过查看它的来源可以告诉你其他方法。

可能只是缺乏数学知识,但这个问题似乎没有足够的界。界的建议:找到一个给定exactly 10整数,如果可能的话,否则返回null。不幸的是,类似这样的事情在很大程度上简化了这个问题。如此之多以至于它几乎变得毫无价值。我主要担心的是我对这个问题考虑得太多了,并且有一些众所周知的方法来解决它。事实并非如此,事实上我需要考虑你可以通过取所有给定的根,比如a,b和c,然后用f(x)=(x-a)*(x-b)*(x-c)的形式写出多项式.但这并不意味着它们不是满足它的其他多项式。所有类型的序列。也许在没有生成函数的情况下会给出一个“序列”。我也希望能够处理这种情况。我现在处于第一方,所以如果你认为有什么方法我应该重新考虑这个问题,我会感谢你的输入。Some奇妙的链接;正是我所寻找的。我感觉答案会很复杂。我想也许我需要更多的主题知识,然后才能提出正确的问题。谢谢!哇,我花了太长时间证明我的解决方案。你比我快了一英里:)你可能还想看看《具体数学》这本书你可能会发现它比Wilf的书更容易理解。我对这个答案的问题是,它隐式地假设有一个正确的函数,而事实上有无限多的封闭形式函数通过任何指定的有限点集——仅举一个例子,一个n次多项式将通过任何n+1给定点但更大的问题是:无法选择这些函数中的哪一个函数是“最好的”。为什么?一个原因是因为序列中的下一个数字可能是任何数字。在你前面提到这一点之前,我一直在-1。你给出了一个示例算法,而“正确”answer断言不存在这样的算法。有趣。你的回答假设序列是有限的,我认为这是一个正确的假设。@Martin:ephemient清楚地指出,解的状态被限制为n次多项式,它总是适合于有限的n个点集。小的更正:n次多项式可以始终适用于n+1点的有限集合。+1。这应该是正确答案IHMO。最重要的一点是,问题严重欠约束,我认为您给出的1、3、6、10、15的5个不同合理函数的列表非常好地证明了这一点。
(3) -> guess([1, 3, 6, 10, 15])

                 2
                n  + 3n + 2
(3)  [[function= -----------,order= 0]]
                     2
Type: List(Record(function: Expression(Integer),order: NonNegativeInteger))