首页 > 编程知识 正文

数列的递推函数,数列函数构造法

时间:2023-05-04 19:36:29 阅读:181887 作者:2427

“斐波那契数列的生成函数变成什么样? 我听说过”。

请参阅。 请参阅。 请参阅。 所以这个还是写一发吧

有什么用? 无济于事。 请参阅。 请参阅。

1 .齐次线性递推数列

定义:给定常数k、a1、a2、ak、h0、h1、HK1,构造下一个数列。

HN={ HNA1HN 1a2HN2. akhnknknk

称为齐次线性递推数列。

多项式

f(x )=h0 h1x h2x2 .

称为此数列的一般生成函数。

说起齐次线性递推数列,最典型的是斐波那契数列。

不用给出定义吧……

斐波那契数列的生成函数是这样的:

f(x )=1 x 2x2 3x3 5x4 8x5 .

如何用几个有限项多项式表示这个级数?

创建了这样的函数:

a(x )=1xx2

易于验证:

f(x ) a ) x )=1

也就是说:

f(x )=11xx2

为什么会这样呢?

理由很简单,相对于n2,

[n](f(x ) a (x ) ) ) n ) f ) x ) ) N2 ) f ) x )=0

这里,[n]f(x )表示f ) x )的n次项系数

该结论有几个有趣的结果,例如代入x=0.01。 有以下内容。

10.9899=1.010203050813213455 .

另外,如果这样写斐波那契数列

1

11

112

1113

11115

111118

1111113

11111121

……

然后将各位从上到下相加,就会出现长度为89的循环节。 10.89是有理数,所以……

我们可以把它推广成一种常见的形式:

对于递推公式

HN=a1hn 1a2HN2. AK hnk

的生成函数

f(x )=h0 h1x h2x2 .

构造函数:

h(x )=h0 h1x h2x2 . hk1xk1

a(x )=1a1xa2x2.akxk

如果是:

f(x ) a ) x )=h ) x ) a ) x ) modxk

f(x )=h ) x ) a ) x ) modxkA(x ) ) ) ) ) ) f )=h ) x ) x ) x ) modxkA(x ) x ) ) ) ) ) ) f ) x ) x ) x ) x ) x ) x ) x ) x )

我知道这个形状很优雅,但我不知道这个优雅的形状和数列的本质有什么联系……

这有什么用?

给出求第n项、n、k105的k次线性递推方程

o(NK )暴力,平方k3logk,全部剪掉了……

ft可以是o(nlogn )。

请叫我恶性肿瘤。

2 .非齐次线性递推数列

定义:给定常数k、a1、a2、ak、h0、h1、HK1,构造下一个数列。

HN={HNA1HN1a2HN2.AKHNKg(n ) nknk

称为非齐次线性递推数列。

这里,g(n )是关于n的函数,也可以是泛函

需要用几个有限项多项式表示级数。

f(x )=h0 h1x h2x2 .

像以前一样,结构多项式:

h(x )=h0 h1x h2x2 . hk1xk1

a(x )=1a1xa2x2.akxk

g(x )=g )0) g )1) xg )2) x2 .

如果是:

f(x ) a ) x )=h ) x ) a ) x ) modxk ) g ) x ) modxk ) ) ) ) f ) x ) modxk ) )

f(x )=[ h (x ) x ) a ) x ) g ) x ) ]modxk G(x ) x ) a ) x ) ) ) ) ) )

所以如果g(x )能用有限项多项式表示就完成了。 请参阅。 请参阅。

如果g(n )=1,则g ) x )=1 x x2 .=11x

当g(n )=n时,g ) x )=x2x23x3.=x ) 1x ) 2

g(n )=n2时,g ) x )=x4x29x3.=x ) x1 ) 1x ) 3

这样,如果g函数是多项式,则可以表示

3 .卡特兰数列

定义:

HN={ 1h0hn1h1hn2. hn1h0n=0n1

求f(x )=h0 h1x h2x2 .

因为很容易看出这个递归公式本身是卷积的,所以让我们直接平方这个多项式吧

F2(x )=H1H2XH3X2.=F ) x ) 1X

融化了

f(x )=114x2x

也就是说,是卡特兰数列的生成函数。

4。 请参阅。 请参阅。 我不知道这个数列的名字,先叫广义的卡特兰数列吧。 请参阅。 请参阅。

已知伯特兰数列的第n项表示n个元素的堆栈序列数,即从原点到(n,n )不跨越y=x的方案数

那么,定义广义的卡顿数列hk(n ),表示的是n k个要素进入堆栈后剩下的k个要素的堆栈排列数,即从原点到(n k,n )没有跨越y=x的方案数

求生成函数:

fk(x )=hk )0) hk )1) xhk )2) x2 .

考虑堆栈中剩下的这k个要素,放入第I个要素后就不动了,然后进入几个堆栈,填入第i 1个要素

换句话说,可以将第I个元素视为堆栈的底部,对堆栈执行堆栈操作,使堆栈变为空,填充第i 1个元素……

设中途走过的要素数量为s,那么方案的数量是多少?

h0(s ),即卡特兰数列第s项

于是问题很简单。 将n个要素的数组分为k 1段,1段中有s个要素时,用h0(s )求出方案数

看这里就知道会生成函数了吧。

构造函数h(x )=h0 )0) h0(1) xh0 )2) .=114x2x

fk(x )=hk 1 )=) 114x2x ) k1

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。