Какой следующий член…? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием Статьи


В языке Wolfram Language есть четыре совершенно потрясающие функции: FindSequenceFunction, RSolve, DifferenceRootReduce и FindFormula. В этой статье мы обсудим их возможности и поговорим о функциях, тесно с ними связанных — для поиска параметров линейной рекурсии FindLinearRecurrence (коэффициентов линейного рекуррентного уравнения), производящих функциях GeneratingFunction и Z-преобразовании ZTransform.

Первая функция — FindSequenceFunction — по последовательности чисел ищет выражение для её n-го члена не требуя вообще ничего более.

In[1]:=
Hold @ FindSequenceFunction[{1, 1, 2, 3, 5, 8, 13}, n]
Out[1]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием
In[2]:=
FindSequenceFunction[
  {
    -2, 4 * Pi, -16, 16 * Pi, -128 * 3, 32 * Pi, -1024 * 15, 128 * Pi * 3,
    -8192 * 105, 128 * Pi * 3
  },
  n
]
Out[2]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Вторая функция — RSolve — решает рекуррентные уравнения самых разных типов. Элементы могут иметь вид \(a[f[n]]\), \(a[f[f[n]]]\), \(a[f[f[\text{...}f[n]\text{...}]]]\), где f имеет вид: n+A (арифметические разностные уравнения), B*n — геометрические или q-разностные уравнения), B*n+a (арифметико-геометрические функциональные разностные уравнения), B*n^d (степеные геометрические функциональные разностные уравнения), (A*n+B)/(C*n+D) (линейные дробные функциональные разностные уравнения).

In[3]:=
RSolve[
  {
    Equal[a[n + 3], 2 * a[n]],
    Equal[a @ 1, Global`α],
    Equal[a @ 2, Global`β],
    Equal[a @ 3, Global`γ]
  },
  a, n
]
Out[3]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием
In[4]:=
RSolve[
  {
    Equal[v @ n, (2 * Pi * v[n - 2]) / n],
    Equal[v @ 2, Pi],
    Equal[v @ 3, (4 * Pi) / 3]
  },
  v @ n, n
]
Out[4]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Третья функция — DifferenceRootReduce — ищет рекуррентное соотношение для последовательности чисел, n-й член которой имеет заданный вид.

In[5]:=
DifferenceRootReduce[-2 * n * Pi * Factorial[(n * 2) - 1],
  n
]
Out[5]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием
In[6]:=
RSolve[
  {
    Equal[(-8 * y[n]) + n * y[2 + n], 0],
    Equal[y @ -1, 1 * 4],
    Equal[y @ 0, 0],
    Equal[y @ 1, -2],
    Equal[y @ 2, 4 * Pi]
  },
  y, n
]
Out[6]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Эта функция может много чего ещё, скажем, проверять тождества относительно последовательностей, к примеру:

In[7]:=
DifferenceRootReduce[Equal[Fibonacci[2 * n], Fibonacci[n] * LucasL[n]], n]
Out[7]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Здесь LucasL — последовательность чисел Люка (это, по сути, последовательность Фибоначчи, только первые члены не 1, 1, а 1, 3.

In[8]:=
Hold @ DifferenceRootReduce @ LucasL @ n
Out[8]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием
In[9]:=
DifferenceRootReduce[Equal[LucasL @ n, Fibonacci[n - 1] + Fibonacci[n + 1]]]
Out[9]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Как найти рекуррентную формулу для последовательности?

Метод поиска общего члена последовательности часто основан на том, что нужно подобрать рекуррентное уравнение.

Работать это может примерно так: пусть мы ищем n-й член последовательности в виде \(f[n]=\sum_{i=1}^ka[i]f[n-i]\). Пусть у нас есть первые члены последовательности:

In[10]:=
sequence = {1, 0, 1, 2, 5, 12, 29, 70, 169, 408, 985, 2378, 5741, 13860, 33461}
Out[10]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Попробуем найти выражение для n-го члена в виде \(f[n]=\sum_{i=1}^1a[i]f[n-i]=a[1]f[n-1]\):

In[11]:=
seauenseEq1 = MovingMap[
  Function[
    Equal[Dot[Part[#, 1;;1], {a @ 1}],
      Part[#, -1]
    ]
  ],
  sequence, 1
]
Out[11]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием
In[12]:=
Hold @ Solve @ seauenseEq1
Out[12]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Как видно, решений нет.

Попробуем искать теперь в виде \(f[n]=\sum_{i=1}^2a[i]f[n-i]=a[1]f[n-1]+a[2]f[n-2]\):

In[13]:=
seauenseEq2 = MovingMap[
  Function[
    Equal[Dot[Part[#, 1;;2], {a @ 1, a @ 2}],
      Part[#, -1]
    ]
  ],
  sequence, 2
]
Out[13]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием
In[14]:=
Hold @ Solve @ seauenseEq2
Out[14]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Как видим, получилось. Значит, n-й член имеет вид: \(f[n]=f[n-1]+2f[n-2]\).

На само деле есть встроенная функция FindLinearRecurrence, которая позволяет найти линейную рекурсию, подобно тому, как мы это только что сделали:

In[15]:=
Hold @ FindLinearRecurrence @ sequence
Out[15]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Используя функцию LinearRecurrence можно продлить последовательность:

In[16]:=
LinearRecurrence[{2, 1}, sequence[[1;;2]], 50]
Out[16]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Или объединить все в одну строчку, построив функцию, которая: продлит последовательность, выдаст разностное уравнение и найдет общую формулу для n-го члена:

In[17]:=
sequenseExtension[list_, n_] := Module[
  {lr, eq},
  lr = FindLinearRecurrence @ list;
  eq = Flatten[
    {
      Equal[a @ k,
        Total[
          Table[
            a[k + -i] * Part[lr, i],
            {i, 1, Length @ lr}
          ]
        ]
      ],
      Table[Equal[a @ i, list[[i]]], {i, 1, Length @ lr}]
    }
  ];
  <|
    "Уравнение" -> eq,
    "Формула" -> FullSimplify[a[k] /. Part[RSolve[eq, a, k], 1]],
    "Продление" -> LinearRecurrence[lr, Part[list, Span[1, Length[lr]]], n]
  |>
];
In[18]:=
Hold @ sequenseExtension[{1, 1, 2, 3, 5}, 20]
Out[18]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием
In[19]:=
Hold @ sequenseExtension[{1, 2, 2, 1, 1, 2, 2, 1}, 20]
Out[19]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием
In[20]:=
Hold @ sequenseExtension[
{1, 0, -1, 0, 2, 0, -2, 0, 3, 0, -3, 0, 4, 0, -4},
25
]
Out[20]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Как найти формулу для n-го члена последовательности?

Z-преобразование

Z-преобразование состоит в вычислении ряда вида \(\sum_{n=0}^{\infty}f(n)z^{-n}\) от дискретной функции \(f(n)\). Это преобразование позволяет свести рекуррентное уравнение для задания последовательности к уравнению относительно образа функции \(f(n)\), что аналогично преобразованию Лапласа, которое сводит дифференциальные уравнения к алгебраическим.

Вот как это работает:

In[21]:=
Grid[
  Transpose[
    Function[
      {
        #,
        Map[TraditionalForm, Map[FullSimplify, ZTransform[#, n, z]]]
      }
    ][
      {
        f[n - 2],
        f[n - 1],
        f @ n,
        f[n + 1],
        f[n + 2]
      }
    ]
  ],
  Background -> White, Dividers -> All
]
Out[21]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Посмотрим на примере, скажем, возьмем хорошо известную последовательность Фибоначчи:

In[22]:=
fibonacciEq = Equal[f @ n, f[n - 1] + f[n - 2]];

initialConditions = {f[1] -> 1, f[2] -> 1};

Ясно, что её стоит переписать в виде, как показано ниже, чтобы не появлялись конструкции типа \(f(-1)\) после применения Z-преобразования.

In[24]:=
fibonacciEq = Equal[f[n + 2], f[n + 1] + f[n]];

initialConditions = {f[0] -> 1, f[1] -> 1};

Осуществим Z-преобразование:

In[26]:=
fibonacciEqZTransformed = ReplaceAll[fibonacciEq, pattern:f[__] :> ZTransform[pattern, n, z]]
Out[26]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Решим уравнение относительно образа функции f — ZTransform[f[n],n,z]:

In[27]:=
fZTransformed = ReplaceAll[
  ZTransform[f @ n, n, z],
  Part[Solve[fibonacciEqZTransformed, ZTransform[f @ n, n, z]], 1]
]
Out[27]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Выполним обратное Z-преобразование, подставив одновременно начальные условия (заменим n на n-1 в финальном выражении, чтобы наша последовательность имела правильную индексацию (с первого, а не нулевого члена):

In[28]:=
ReplaceAll[InverseZTransform[fZTransformed /. initialConditions, z, n],
  n -> (n - 1)
]
Out[28]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Естестевенно это можно автоматизировать, создав свой аналог RSolve:

In[29]:=
myRSolve[eq_, initials_, f_, n_] := Module[
  {z, initialsInner, eqZTransformed, fZTransformed},
  initialsInner = ReplaceAll[initials, f[x_] :> f[x - 1]];
  eqZTransformed = ReplaceAll[eq, pattern:f[__] :> ZTransform[pattern, n, z]];
  fZTransformed = ReplaceAll[ZTransform[f @ n, n, z],
    Part[Solve[eqZTransformed, ZTransform[f @ n, n, z]], 1]
  ];
  FullSimplify[
    InverseZTransform[fZTransformed /. initialsInner, z, n] /. n -> (n - 1)
  ]
];
In[30]:=
myRSolve[
  {
    Equal[f[n + 2],
      (2 * f[n + 1]) + -(5 * f[n])
    ]
  },
  {f[1] -> 20, f[2] -> 0},
  f, n
]
Out[30]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием
In[31]:=
RSolve[
  {
    Equal[f[n + 2],
      (2 * f[n + 1]) + -(5 * f[n])
    ],
    Equal[f @ 1, 20],
    Equal[f @ 2, 0]
  },
  f, n
]
Out[31]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Но, конечно, RSolve содержит намного больше возможностей для решения самых разных дискретных уравнений, на которых мы не будем останавливаться подробнее:

In[32]:=
RSolve[Equal[a @ n, (n * a[n]) + n], a, n],
RSolve[
  {
    Equal[a[n + 1],
      (2 * a[n]) + (3 * a[n]) + 4
    ],
    Equal[a @ 0, 0]
  },
  a, n
],
RSolve[
  Equal[y[n + 1 * 3],
    (2 * y[n + 1 * 6]) + n * 2
  ],
  y, n
]
Out[32]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием
Out[33]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием
Out[34]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Производящие функции

Производящая функция последовательности \(a(n)\) это такая функция \(G(x)\), разложение которой в ряд Тейлора (или, более широко, Лорана) имеет вид — \(G(x)=\sum_{i=0}^{\infty}a(n)x^n\). Другими словами, коэффициенты при степенях x в разложении функции в ряд задают нашу последовательность.

Скажем, функция \(G(x)=\frac{1}{1-x}\) является производящей функцией последовательности 1, 1, 1, 1, ...:

In[35]:=
Series[1 / (1 + -x), {x, 0, 10}]
Out[35]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

А функция \(G(x)=\frac{1}{1-x-x^2}\) является производящей функцией последовательности Фибоначчи 1, 1, 2, 3, 5, 8, 13, ...:

In[36]:=
Series[(1 * 1) + (-x) + -(x * 2),
  {x, 0, 10}
]
Out[36]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Ещё есть разновидность производящей функции — экспоненциальная производящая функция, которая для последовательности \(a(n)\) имеет вид — \(G(x)=\sum_{i=0}^{\infty}\frac{a(n)}{n!}x^n\).

Скажем, для последовательностей 1, 1, 1, 1... и 1, 1, 2, 3, 5, 8, 13, ... экспоненциальные производящие функции таковы — \(e^x\) и \(\frac{1}{\sqrt{5}}e^{-\frac{2x}{1+\sqrt{5}}}\left(e^{\sqrt{5}x}-1\right)\):

In[37]:=
ReplaceAll[Normal[Series[E ^ x, {x, 0, 10}]],
  Power[x, n_] :> ((x ^ n) * Factorial[n])
]
Out[37]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием
In[38]:=
ReplaceAll[
  Normal[
    FullSimplify[
      Series[
        Plus[E,
          (-(2 * x * 1)) + 5 * ((E * 5 * x) - 1) * 5
        ],
        {x, 0, 10}
      ]
    ]
  ],
  Power[x, n_] :> ((x ^ n) * Factorial[n])
]
Out[38]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Производящую функцию в Wolfram Language можно найти двумя функциями — GeneratingFunction и FindGeneratingFunction (экспоненциальную с помощью ExponentialGeneratingFunction):

In[39]:=
GeneratingFunction[-(m * Factorial[n]), {n, m}, {x, y}]
Out[39]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием
In[40]:=
TraditionalForm[
  FullSimplify[
    ExponentialGeneratingFunction[-(n * Factorial[n - 1] * Factorial[2 * n]), n, x]
  ]
]
Out[40]//TraditionalForm=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием
In[41]:=
Hold @ FindGeneratingFunction[
{1, 0, -1, 2, 0, -2, 3, 0, -3, 4, 0, -4, 5, 0, -5},
x
]
Out[41]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Есть много методов поиска общего члена последовательности с помощью производящих функций. Не будем подробно останавливаться на этом, скажем, только что неплохая теория есть на сайте genfunc.ru.

Один из методов похож на Z-преобразование:

In[42]:=
generatingFEq = ReplaceAll[
  Equal[f[n + 2], f[n + 1] + f[n]],
  pattern:f[__] :> GeneratingFunction[pattern, n, z]
],
generatingF = ReplaceAll[
  GeneratingFunction[f @ n, n, z],
  Part[Solve[generatingFEq, GeneratingFunction[f @ n, n, z]], 1]
],
nthTerm = SeriesCoefficient[generatingF, {z, 0, n}],
FullSimplify[
  ReplaceAll[ReplaceAll[nthTerm, {f[0] -> 1, f[1] -> 1}],
    n -> (n - 1)
  ],
  GreaterEqual[n, 1]
]
Out[42]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием
Out[43]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием
Out[44]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием
Out[45]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

OEIS — Онлайн-энциклопедия целочисленных последовательностей и интеграция с Wolfram Language

В интернете доступна совершенно потрясающая коллекция числовых последовательностей — OEIS (On-Line Encyclopedia of Integer Sequences). Она была создана Нилом Слоуном во время его исследовательской деятельности в AT&T Labs. В OEIS хранится информация о целочисленных последовательностях, представляющих интерес как для любителей, так и для специалистов в математике, комбинаторике, теории чисел, теории игр, физике, химии, биологии, информатике. На данный момент там собрано 329085 последовательностей. Запись в OEIS включает в себя первые элементы последовательности, ключевые слова, математическое описание, фамилии авторов, ссылки на литературу; присутствует возможность построения графика или проигрывания музыкального представления последовательности. Поиск в базе данных может осуществляться по ключевым словам и по подпоследовательности.

Недавно появилась интеграция с этой базов внутри Wolfram Language (при использовании важно понимать, что это разработка пользователей — с недавного времени можно выгружать свой код в репозиторий Wolfram Function Repository). Достаточно просто указать номер интересующей вас последовательности или список номеров.

In[46]:=
OEISSequenceData = ResourceFunction @ "OEISSequenceData";

OEISSequence = ResourceFunction @ "OEISSequence";

ResourceFunction["OEISSequence"] — просто выдает первые члены последовательности:

In[48]:=
Hold @ OEISSequence @ "A666"
Out[48]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

ResourceFunction["OEISSequenceData"] — выдает датасет с полной информацией из базы:

In[49]:=
sequenceData[666] = OEISSequenceData[666, "Dataset"]
Out[49]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Скажем, можно "вытащить" код на языке Wolfram Language:

In[50]:=
Hold @ Normal @ sequenceData[666]["CodeWolframLanguageStrings"]
Out[50]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Или набор случайно выбранных последовательностей с интересующей по ним информацией:

In[51]:=
randomSequences = Dataset @ Map[
  Normal,
  OEISSequenceData[RandomInteger[{1, 300000}, 10], "Dataset"]
];
In[52]:=
Function[
  Framed[#, FrameStyle -> None, FrameMargins -> 5, Background -> White]
][
  Grid[
    Join[
      {
        Map[Style[#, Bold, 18]&,
          {"Название", "Формулы", "Ссылки", "Первые члены", "График первых членов"}
        ]
      },
      Map[
        Function[
          Map[
            Function[
              TextCell[#, LineIndent -> 0, FontSize -> 12, FontFamily -> "Open Sans Light"]
            ],
            {
              Style[Part[#, 1], 16],
              Row[Part[#, 4], "\n"],
              Row[Part[#, 3], "\n"],
              Style[Row[Part[#, 2], "; "], 10],
              ListLinePlot[Part[#, 2], ImageSize -> Full]
            }
          ]
        ],
        Values @ Normal @ randomSequences[All, {"Name", "Sequence", "References", "Formulae"}]
      ]
    ],
    Dividers -> {{None, {LightGray}, None}, {None, {LightGray}, None}},
    ItemStyle -> Directive[FontSize -> 12, FontFamily -> "Open Sans Light"],
    ItemSize -> {{15, 25, 10, 15, 15}, Automatic},
    Alignment -> {Left, Center},
    Background -> {None, {LightOrange, White}}
  ]
]
Out[52]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Поиск потенциально возможной формулы

Наконец, хотелось бы отметить функцию FindFormula, которая по заданному набору чисел строит формулу, которая их может описать. Примем зависимостей подобрать можно много и из разных классов функций.

In[53]:=
data = Table[
  {
    x,
    Sin[2 * x] + Cos[x] + RandomVariate[NormalDistribution[0, 0.2]]
  },
  {x, RandomReal[{-10, 10}, 1000]}
];

ListPlot[data, Background -> White, ImageSize -> 600]
Out[54]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием
In[55]:=
formulas = FindFormula[data, x]
Out[55]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Как видно, Wolfram Language подобрал функцию, очень близкую к той, на основе которой были построены "зашумленные" данные, а именно — Sin[2x]+Cos[x]:

In[56]:=
Plot[formulas,
  {x, -10, 10},
  PlotStyle -> AbsoluteThickness[3],
  Prolog -> {AbsolutePointSize[5], Gray, Point @ data},
  Background -> White, ImageSize -> 800, PlotLegends -> "Expressions"
]
Out[56]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Можно построить и большее количество зависимостей, скажем, 10:

In[57]:=
formulas = FindFormula[data, x, 10]
Out[57]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием
In[58]:=
Plot[formulas,
  {x, -10, 10},
  PlotStyle -> AbsoluteThickness[3],
  Prolog -> {AbsolutePointSize[5], LightGray, Point @ data},
  Background -> White, ImageSize -> 800, PlotLegends -> "Expressions"
]
Out[58]=
Какой следующий член...? — Ищем формулу для n-го члена числовой последовательности, знакомимся с производящими функциями и Z-преобразованием

Стоит отметить, что есть функция, аналогиченая по функционалу, которая ищет вероятностное распределение — FindDistribution.

Оценить статью
Блог о Wolfram Mathematica

Оставить комментарий

avatar
  Подписаться  
Уведомление о