Каким-то образом я пришел к идее обратной трансформации: если известно
![$s(n)$ $s(n)$](https://dxdy-03.korotkov.co.uk/f/6/f/c/6fce6f7442e83e8382439264f51cb11882.png)
, то как вычислить
![$f(n)$ $f(n)$](https://dxdy-04.korotkov.co.uk/f/3/d/4/3d425a215e8eeb2a056f553633aaae4a82.png)
? Здесь мне пригодились дополнительные значения
![$$s(n,m)=\sum\limits_{k=0}^{2^n-1}b(2^mk)$$ $$s(n,m)=\sum\limits_{k=0}^{2^n-1}b(2^mk)$$](https://dxdy-04.korotkov.co.uk/f/f/c/2/fc28876c2bb0491a2c25a48a772115d282.png)
Опытным путем было установлено, что
![$$s(n,m) = s(n+1,m-1) - \sum\limits_{k=0}^{m-1}f(m-k-1)s(n,k)$$ $$s(n,m) = s(n+1,m-1) - \sum\limits_{k=0}^{m-1}f(m-k-1)s(n,k)$$](https://dxdy-03.korotkov.co.uk/f/6/b/f/6bf20cf65605a0d95a65d052ca07473d82.png)
Т.е. если мы знаем
![$s(n,0)$ $s(n,0)$](https://dxdy-02.korotkov.co.uk/f/9/e/f/9efcce30c67e427bd041e07dbf9a9ef582.png)
, то можем найти все значения
![$s(n,m)$ $s(n,m)$](https://dxdy-04.korotkov.co.uk/f/3/2/3/32374509d917a09d67ca0e9c8a39afaf82.png)
для любого
![$m>0$ $m>0$](https://dxdy-02.korotkov.co.uk/f/9/6/d/96d12c1606f398a8ecec0c413d6200f582.png)
.
Важно: работает только для возрастающих последовательностей
![$s(n,0)$ $s(n,0)$](https://dxdy-02.korotkov.co.uk/f/9/e/f/9efcce30c67e427bd041e07dbf9a9ef582.png)
у которых
![$s(0,0)=1$ $s(0,0)=1$](https://dxdy-02.korotkov.co.uk/f/5/4/1/541d96b24153c80bfcfc4bb90f7cbdef82.png)
. Исходя из этих условий мы без проблем можем задавать
![$s(0,m)=1$ $s(0,m)=1$](https://dxdy-02.korotkov.co.uk/f/d/6/e/d6e16755e02e6758b0394dbd76ca9cd182.png)
.
По сути для вычисления
![$f(n)$ $f(n)$](https://dxdy-04.korotkov.co.uk/f/3/d/4/3d425a215e8eeb2a056f553633aaae4a82.png)
нам достаточно знать
![$s(1,n)$ $s(1,n)$](https://dxdy-04.korotkov.co.uk/f/b/d/d/bdd5fe363a76ffb91bc2c94118b4144882.png)
и все предыдущие значения
![$f(n)$ $f(n)$](https://dxdy-04.korotkov.co.uk/f/3/d/4/3d425a215e8eeb2a056f553633aaae4a82.png)
:
![$$f(n)=s(1,n)-1-\sum\limits_{k=0}^{n-1}f(k)$$ $$f(n)=s(1,n)-1-\sum\limits_{k=0}^{n-1}f(k)$$](https://dxdy-02.korotkov.co.uk/f/1/0/b/10b399e18c3aac6258740e893b0a4e5f82.png)
Отсюда мы также учимся вычислять
![$s(n,0)$ $s(n,0)$](https://dxdy-02.korotkov.co.uk/f/9/e/f/9efcce30c67e427bd041e07dbf9a9ef582.png)
без суммирования
![$b(k)$ $b(k)$](https://dxdy-02.korotkov.co.uk/f/5/b/2/5b2a930dc245dc8fb8d08f745e13c99182.png)
:
![$$s(n,m)=s(n-1,m+1)+\sum\limits_{k=0}^{m}f(m-k)s(n-1,k), s(0,m)=1$$ $$s(n,m)=s(n-1,m+1)+\sum\limits_{k=0}^{m}f(m-k)s(n-1,k), s(0,m)=1$$](https://dxdy-02.korotkov.co.uk/f/9/b/c/9bc0b95a40b67a1dd0ab26e312d2b7a982.png)
Если сохранять значения в массивы, то скорость счета увеличивается в разы. Данные результаты неоптимальны при вычислении отдельных значений, но для получения списка
![$n$ $n$](https://dxdy-02.korotkov.co.uk/f/5/5/a/55a049b8f161ae7cfeb0197d75aff96782.png)
первых значений
![$f(n)$ $f(n)$](https://dxdy-04.korotkov.co.uk/f/3/d/4/3d425a215e8eeb2a056f553633aaae4a82.png)
или
![$s(n,0)$ $s(n,0)$](https://dxdy-02.korotkov.co.uk/f/9/e/f/9efcce30c67e427bd041e07dbf9a9ef582.png)
они крайне полезны.
Теперь вы можете получать больше значений
![$s_1(n)$ $s_1(n)$](https://dxdy-01.korotkov.co.uk/f/8/2/7/8271f744d046f94a2999b26415ede2b282.png)
:
Код:
f(n)=n
s1(n)=my(v, v1); v=vector(n+1,i,1); v1=v; v2=vector(n+1,i,0); v2[1]=1; for(i=1,n,for(j=1,n-i+1,v1[j]=v[j+1]+sum(k=1,j,f(j-k)*v[k])); v=v1; v2[i+1]=v[1];); v2
w=s1(50)
print(w)
Кроме того, вы можете выбрать любую последовательность в энциклопедии (обязательно возрастающую и с первым членом равным единице!), скопировать несколько первых членов и вставить в следующую программку:
Код:
w=[1, 2, 3, 5, 7, 11, 15, 22, 30, 42, 56, 77, 101, 135, 176, 231, 297, 385, 490, 627, 792, 1002, 1255, 1575, 1958, 2436, 3010, 3718, 4565, 5604, 6842, 8349, 10143, 12310, 14883, 17977, 21637, 26015, 31185, 37338, 44583, 53174, 63261, 75175, 89134, 105558, 124754, 147273, 173525]
f(n)=my(A=w, B=[A,[1]], v); v=vector(n+1,i,0); v[1]=A[2]-A[1]; for(i=2,n+1,B=vector(i+1,j,if(j==1,B[1],vector(i-j+2,k,if(j==i+1,1,if(k<i-j+2,B[j][k]))))); for(j=2,i,B[j][i-j+2]=B[j-1][i-j+3]-sum(k=1,j-1,v[j-k]*B[k][i-j+2])); v[i]=B[i][2]-sum(j=1,i-1,v[j])-1); v
w1=f(#w-2)
print(w1)
Она выполнит обратную трансформацию, т.е. вернет вам
![$f(n)$ $f(n)$](https://dxdy-04.korotkov.co.uk/f/3/d/4/3d425a215e8eeb2a056f553633aaae4a82.png)
, наличие которой вы можете проверить в энциклопедии. Если результат окажется положительным, помещайте исходную и результирующую последовательность в этой теме.
В приведенном выше примере мы берем за
![$s(n,0)$ $s(n,0)$](https://dxdy-02.korotkov.co.uk/f/9/e/f/9efcce30c67e427bd041e07dbf9a9ef582.png)
последовательность
A000041 и получаем гипотезу, что
![$f(n)$ $f(n)$](https://dxdy-04.korotkov.co.uk/f/3/d/4/3d425a215e8eeb2a056f553633aaae4a82.png)
это
A176950, члены которой умножены на
![$(-1)^n$ $(-1)^n$](https://dxdy-01.korotkov.co.uk/f/0/9/5/09505260368f4e3fca3c63026053a27c82.png)
.
Ну а я пока продолжу работу над обратной трансформацией для
![$g(n,m)$ $g(n,m)$](https://dxdy-04.korotkov.co.uk/f/3/7/7/37722459fb0e18b11e68b426d068f64382.png)
. Жду ваших постов!