zeilberger (Maxima 5.50.0 Manual)

## 82 zeilberger ¶

### 82.1 Introduction to zeilberger ¶

`zeilberger`は 超幾何定総和に関するZeilbergerのアルゴリズムと 超幾何不定総和に関するGosperのアルゴリズムの実装します。

`zeilberger`は Axel Rieseによって開発された「フィルタリング」最適化法を利用します。

`zeilberger`はFabrizio Carusoによって開発されました。

`load ("zeilberger")`はこのパッケージをロードします。

Sums and products · Share packages · Package zeilberger ·

#### 82.1.1 The indefinite summation problem ¶

`zeilberger`は 超幾何不定総和に関するGosperのアルゴリズムの実装します。 \(k\)の超幾何項\(F_k\)が与えられたとして、 超幾何反差(anti-difference)、すなわち、以下のような超幾何項\(f_k\) を見つけることを望みます。

\(F_k = f_(k+1) - f_k\).

#### 82.1.2 The definite summation problem ¶

`zeilberger`は 超幾何定総和に関するGosperのアルゴリズムの実装します。 適当な(\(n\)と\(k\)に関する)超幾何項 \(F_(n,k)\) と正の整数\(d\)が与えられたとして、 \(F_(n,k)\) に関する(\(n\)に関する)多項式係数を持つ\(d\)次の線形漸化式と、 \(a_0 F_(n,k) + ... + a_d F_(n+d),k = Delta_k(R(n,k) F_(n,k))\), のような\(n\)と\(k\)に関する有理函数\(R\)を見つけることを望みます。

ここで、 \(Delta_k\) は \(k\)-順方向差分演算子です。すなわち、 \(Delta_k(t_k) := t_(k+1) - t_k\).

#### 82.1.3 Verbosity levels ¶

以下の接尾辞の1つを追加することでコールされる出力が冗長なバージョンのコマンドもあります:

`Summary`

  終わりにサマリだけが表示されます。

`Verbose`

  中間ステップでのある情報。

`VeryVerbose`

  更なる情報。

`Extra`

  Zeilbergerのアルゴリズムでの線形系上の情報を含む更なる情報。

例えば:
`GosperVerbose`, `parGosperVeryVerbose`, `ZeilbergerExtra`, `AntiDifferenceSummary`.

### 82.2 Functions and Variables for zeilberger ¶

関数: AntiDifference (\(F_k\), k) ¶

  もし存在すれば、\(F_k\)の超幾何反差を返します。
  そうでなければ、 `AntiDifference`は `no_hyp_antidifference`を返します。

  Package zeilberger ·

関数: Gosper (\(F_k\), k) ¶

  もし存在すれば、 \(F_k\)に対する有理証(rational certificate)、 すなわち、 以下のような有理函数を返します。 \(F_k = R(k+1) F_(k+1) - R(k) F_k\), そうでなければ、 `Gosper`は `no_hyp_sol`を返します。

  Package zeilberger ·

関数: GosperSum (\(F_k\), k, a, b) ¶

  もし \(F_k\)が超幾何反差を持つなら、 \(\mathit{k} = \mathit{a}\)から \(\mathit{k} = \mathit{b}\)までの \(F_k\)の和を返します。 そうでなければ、 `GosperSum`は `nongosper_summable`を返します。

  例:

      (%i1) load ("zeilberger")$

      (%i2) GosperSum ((-1)^k*k / (4*k^2 - 1), k, 1, n);
      Dependent equations eliminated:  (1)
                                 3       n + 1
                            (n + -) (- 1)
                                 2               1
      (%o2)               - ------------------ - -
                                        2        4
                            2 (4 (n + 1)  - 1)

      (%i3) GosperSum (1 / (4*k^2 - 1), k, 1, n);
                                      3
                                - n - -
                                      2       1
      (%o3)                  -------------- + -
                                      2       2
                             4 (n + 1)  - 1

      (%i4) GosperSum (x^k, k, 1, n);
                                n + 1
                               x          x
      (%o4)                    ------ - -----
                               x - 1    x - 1

      (%i5) GosperSum ((-1)^k*a! / (k!*(a - k)!), k, 1, n);
                                      n + 1
                      a! (n + 1) (- 1)              a!
      (%o5)       - ------------------------- - ----------
                    a (- n + a - 1)! (n + 1)!   a (a - 1)!

      (%i6) GosperSum (k*k!, k, 1, n);
      Dependent equations eliminated:  (1)
      (%o6)                     (n + 1)! - 1

      (%i7) GosperSum ((k + 1)*k! / (k + 1)!, k, 1, n);
                        (n + 1) (n + 2) (n + 1)!
      (%o7)             ------------------------ - 1
                                (n + 2)!

      (%i8) GosperSum (1 / ((a - k)!*k!), k, 1, n);
      (%o8)                  NON_GOSPER_SUMMABLE

  Package zeilberger ·

関数: parGosper (\(F_(n,k)\), k, n, d) ¶

  \(F_(n,k)\)に対して次数dの漸化式を見つけようとします。

  アルゴリズムは解の列 \([s_1, s_2, ..., s_m]\)をもたらします。 解それぞれは形式

  \([R(n, k), [a_0, a_1, ..., a_d]].\)

  を持ちます。

  もし漸化式を見つけられないなら、 `parGosper`は `[]`を返します。

  Package zeilberger ·

関数: Zeilberger (\(F_(n,k)\), k, n) ¶

  \(F_(n,k)\)の超幾何不定総和を計算しようとします。

  `Zeilberger`は最初に `Gosper`を呼び出し、 もしそれが解を見つけるのに失敗したら、 次数 1, 2, 3, ..., から `MAX_ORD`までを使って `parGosper`を呼び出します。 もしZeilbergerが `MAX_ORD`に達する前に 停止して、解を返します。

  アルゴリズムは解の列 \([s_1, s_2, ..., s_m]\)をもたらします。 解それぞれは形式

  \([R(n,k), [a_0, a_1, ..., a_d]].\)

  を持ちます。

  もし解を見つけられなかったら、 `Zeilberger`は `[]`を返します。

  `Zeilberger`は `Gosper_in_Zeilberger`が `true`の時だけ `Gosper`を呼び出します。

  Package zeilberger ·

### 82.3 General global variables ¶

グローバル変数: MAX_ORD ¶

  デフォルト値: 5

  `MAX_ORD`は `Zeilberger`が試みる漸化式の最大次数です。

  Package zeilberger ·

グローバル変数: simplified_output ¶

  デフォルト値: `false`

  `simplified_output`が `true`の時、 `zeilberger`パッケージの関数は 解の更なる整理を試みます。

  Package zeilberger ·

グローバル変数: linear_solver ¶

  デフォルト値: `linsolve`

  `linear_solver`は Zeilbergerのアルゴリズムで方程式系を解くのに使うソルバを指定します。

  Package zeilberger ·

グローバル変数: warnings ¶

  デフォルト値: `true`

  `warnings`が `true`の時、 `zeilberger`パッケージの関数は 実行中に警告メッッセージを印字します。

  Package zeilberger ·

グローバル変数: Gosper_in_Zeilberger ¶

  デフォルト値: `true`

  `Gosper_in_Zeilberger`が `true`の時、 `Zeilberger`関数は `parGosper`をコールする前に `Gosper`をコールします。 そうでないなら、 `Zeilberger`はすぐに `parGosper`に向かいます。

  Package zeilberger ·

グローバル変数: trivial_solutions ¶

  デフォルト値: `true`

  `trivial_solutions`が `true`の時、 `Zeilberger`は 零に等しい証を持つ解か、 すべての係数が零に等しい解 を返します。

  Package zeilberger ·

### 82.4 Variables related to the modular test ¶

グローバル変数: mod_test ¶

  デフォルト値: `false`

  `mod_test`が `true`の時、 `parGosper`は 解を持たない系を除くためにモジュラーテストを実行します。

  Package zeilberger ·

グローバル変数: modular_linear_solver ¶

  デフォルト値: `linsolve`

  `modular_linear_solver`は `parGosper`でのモジュラーテストが使う線形ソルバを指定します。

  Package zeilberger ·

グローバル変数: ev_point ¶

  デフォルト値: `big_primes[10]`

  `parGosper`でモジュラーテストを実行する時 `ev_point`で変数 nが評価されます。

  Package zeilberger ·

グローバル変数: mod_big_prime ¶

  デフォルト値: `big_primes[1]`

  `mod_big_prime`は `parGosper`でモジュラーテストが使う法です。

  Package zeilberger ·

グローバル変数: mod_threshold ¶

  デフォルト値: 4

  `mod_threshold`は `parGosper`でのモジュラーテストが試みられる際の最大次数です。

  Package zeilberger ·

JavaScript license information