1

階乗を連続化したかった(未達)

122
0
$$$$

積分の収束がよく分からず、あまり考えないことにしています。

経緯

バーゼル問題を解いている最中に、階乗が積分できたらいいのになあと思い、階乗を連続化した関数の導出に挑戦しました。

本題

考察

考察内容

$$f(Ax)=f(A(x-1)) \prod_{k=0}^{A-1}(Ax-k) \quad (A\in \mathbb Z,\quad 0\le A)$$
特に、$x\in \mathbb N$のとき、
$$f(Ax)=(Ax)!$$
また、$f(0)$の場合は、$A=0$とみなして、
$f(0)=0!=1$

考察結果

$$ \left|\frac{f(ax)}{f(a(x-1))}\right|=a!\exp\left({\int_{0}^{1}\left(\frac{t^{a(x-1)} - t^{ax} + t^{a} - 1}{(1-t)\log t} \right)}dt\right) \quad(a\in \mathbb N,x>1-\frac{1}{a}) $$

導出

以下全て
$$ (a\in \mathbb N,\quad x>1-\frac{1}{a}) $$
とする。
考察内容の式を用いる。
$$ f(Ax)=f(A(x-1)) \prod_{k=0}^{A-1}(Ax-k) $$
$A=a$とし、以下の導出で用いる範囲に対して$f(ax)\ne0$と仮定し、両辺に絶対値をつけて対数を取ると、
$$ \begin{align} &\log{|f(ax)|}=\log|f(a(x-1)) \prod_{k=0}^{a-1}(ax-k)|=\log|f(a(x-1))|+\sum_{k=0}^{a-1}\log|ax-k|\\ &\therefore \log{|f(ax)|}=\log|f(a(x-1))|+\sum_{k=0}^{a-1}\log|ax-k|\\ \end{align} $$
両辺を微分すると、
$$ a\times\frac{f'(ax)}{f(ax)}=a\times\frac{f'(a(x-1))}{f(a(x-1))} +\sum_{k=0}^{a-1}\frac{a}{ax-k} $$
移項して$a$を約分すると、
$$ \frac{f'(ax)}{f(ax)}-\frac{f'(a(x-1))}{f(a(x-1))}= \sum_{k=0}^{a-1}\frac{1}{ax-k} $$
ここで、$ax-k$が最小となるのは$k$が最大値$ k=a-1$となるときであるから、$ax-(a-1)>0$とすると$x>1-\frac{1}{a}$となる。仮定より、$x>1-\frac{1}{a}$であることから、$ax-k>0$が常に成り立つ。よって、
$$ \int_{0}^{1}t^{ax-k-1}dt $$
が発散することはないため、
$$ \sum_{k=0}^{a-1}\frac{1}{ax-k}=\sum_{k=0}^{a-1}\int_{0}^{1}t^{ax-k-1}dt $$
とすることができる。
和は有限和であるため、積分と和の順番を入れ替えると、
$$ \sum_{k=0}^{a-1}\frac{1}{ax-k}=\int_{0}^{1}\sum_{k=0}^{a-1}t^{ax-k-1}dt $$
右辺の和は初項$t^{ax-1}$、公比$t^{-1}$、項数$a$の等比数列の和であるため、等比数列の和の公式より、
$$ \sum_{k=0}^{a-1}\frac{1}{ax-k}=\int_{0}^{1}\frac{t^{ax-1}(t^{-a}-1)}{t^{-1}-1}dt=\int_{0}^{1}\frac{t}{t}\times\frac{t^{ax-1}(t^{-a}-1)}{t^{-1}-1}dt=\int_{0}^{1}\frac{t^{ax}(t^{-a}-1)}{1-t}dt $$
積分の収束性については、ここでは議論しない。
以上より、
$$ \begin{align} &\frac{f'(ax)}{f(ax)}-\frac{f'(a(x-1))}{f(a(x-1))}= \sum_{k=0}^{a-1}\frac{1}{ax-k}=\int_{0}^{1}\frac{t^{ax}(t^{-a}-1)}{1-t}dt\\ &\therefore \frac{f'(ax)}{f(ax)}-\frac{f'(a(x-1))}{f(a(x-1))}=\int_{0}^{1}\frac{t^{ax}(t^{-a}-1)}{1-t}dt\\ \end{align} $$
となる。
この式の両辺を$x$$1$から$c\quad(c>1-\frac{1}{a})$まで定積分すると、
$$ \int_{1}^{c}\left(\frac{f'(ax)}{f(ax)}-\frac{f'(a(x-1))}{f(a(x-1))}\right)dx=\int_{1}^{c}\left(\int_{0}^{1}\frac{t^{ax}(t^{-a}-1)}{1-t}dt\right)dx $$
左辺の積分を分配し、右辺の積分の順番を入れ替えて計算すると、
$$ \begin{align} &\int_{1}^{c}\frac{f'(ax)}{f(ax)}dx-\int_{1}^{c}\frac{f'(a(x-1))}{f(a(x-1))}dx=\int_{0}^{1}\left(\int_{1}^{c}\frac{t^{ax}(t^{-a}-1)}{1-t}dx\right)dt\\ &\therefore\int_{1}^{c}\frac{f'(ax)}{f(ax)}dx-\int_{1}^{c}\frac{f'(a(x-1))}{f(a(x-1))}dx=\int_{0}^{1}\left(\frac{(t^{-a}-1)}{1-t}\int_{1}^{c}t^{ax}dx\right)dt\\ &\therefore\left[\frac{1}{a}\log|f(ax)|\right]_{x=1}^{x=c}-\left[\frac{1}{a}\log|f(a(x-1))|\right]_{x=1}^{x=c}=\int_{0}^{1}\left(\frac{(t^{-a}-1)}{1-t}\times \left[\frac{t^{ax}}{a\log t}\right]_{x=1}^{x=c}\right)dt\\ &\therefore\frac{1}{a}\Big[\log|f(ax)|\Big]_{x=1}^{x=c}-\frac{1}{a}\Big[\log|f(a(x-1))|\Big]_{x=1}^{x=c}=\frac{1}{a}\int_{0}^{1}\left(\frac{(t^{-a}-1)}{1-t}\times \left[\frac{t^{ax}}{\log t}\right]_{x=1}^{x=c}\right)dt\\ &\therefore\Big[\log|f(ax)|\Big]_{x=1}^{x=c}-\Big[\log|f(a(x-1))|\Big]_{x=1}^{x=c}=\int_{0}^{1}\left(\frac{(t^{-a}-1)}{1-t}\times \left[\frac{t^{ax}}{\log t}\right]_{x=1}^{x=c}\right)dt\\ &\therefore\log|f(ac)|-\log|f(a)|-\Big(\log|f(a(c-1))|-\log|f(0)|\Big)=\int_{0}^{1}\left(\frac{(t^{-a}-1)}{1-t}\times \left(\frac{t^{ac}}{\log t}-\frac{t^{a}}{\log t}\right)\right)dt\\ &\therefore\log|f(ac)|-\log|f(a)|-\Big(\log|f(a(c-1))|-\log|f(0)|\Big)=\int_{0}^{1}\left(\frac{(t^{-a}-1)}{1-t}\times \left(\frac{t^{ac}-t^{a}}{\log t}\right)\right)dt\\ &\therefore\log|f(ac)|-\log|f(a)|-\Big(\log|f(a(c-1))|-\log|f(0)|\Big)=\int_{0}^{1}\left(\frac{(t^{-a}-1)(t^{ac}-t^{a})}{(1-t)\log t} \right)dt\\ &\therefore\log|f(ac)|-\log|f(a)|-\Big(\log|f(a(c-1))|-\log|f(0)|\Big)=\int_{0}^{1}\left(\frac{t^{a(c-1)} - t^{ac} + t^{a} - 1}{(1-t)\log t} \right)dt\\ \end{align} $$
積分の収束性については、ここでは議論しない。
考察内容で仮定している内容より、
$x=1$のとき、
$$f(A\times 1)=(A)!$$
また、$f(0)$の場合は、$A=0,x=1$とみなして、
$f(0)=0!=1$
計算を進めると、
$$ \begin{align} &\log|f(ac)|-\log|a!|-\Big(\log|f(a(c-1))|-\log|0!|\Big)=\int_{0}^{1}\left(\frac{t^{a(c-1)} - t^{ac} + t^{a} - 1}{(1-t)\log t} \right)dt\\ &\therefore \log|f(ac)|-\log|a!|-\log|f(a(c-1))|=\int_{0}^{1}\left(\frac{t^{a(c-1)} - t^{ac} + t^{a} - 1}{(1-t)\log t} \right)dt\\ &\therefore \log|f(ac)|-\log|f(a(c-1))|=\log|a!|+\int_{0}^{1}\left(\frac{t^{a(c-1)} - t^{ac} + t^{a} - 1}{(1-t)\log t} \right)dt\\ &\therefore \log\left|\frac{f(ac)}{f(a(c-1))}\right|=\log|a!|+\int_{0}^{1}\left(\frac{t^{a(c-1)} - t^{ac} + t^{a} - 1}{(1-t)\log t} \right)dt\\ \end{align} $$
両辺の指数を取ると、
$$ \begin{align} &\exp\left({\log\left|\frac{f(ac)}{f(a(c-1))}\right|}\right)=\exp\left(\log|a!|+\int_{0}^{1}\left(\frac{t^{a(c-1)} - t^{ac} + t^{a} - 1}{(1-t)\log t} \right)dt\right)\\ &\therefore \left|\frac{f(ac)}{f(a(c-1))}\right|=a!\exp\left(\int_{0}^{1}\left(\frac{t^{a(c-1)} - t^{ac} + t^{a} - 1}{(1-t)\log t} \right)dt\right) \end{align} $$
以上の導出を変数$c$の記号を$x$に置き換えてまとめると、
前提となる考察内容、ここまでの導出の際に用いた値の範囲、$f(ax)$の計算で用いた範囲で$f(ax)\ne0$であること、の全てを仮定したとき、
$$ \left|\frac{f(ax)}{f(a(x-1))}\right|=a!\exp\left(\int_{0}^{1}\left(\frac{t^{a(x-1)} - t^{ax} + t^{a} - 1}{(1-t)\log t} \right)dt\right) $$

検証

GeminiとChatGPTに
$$ \left|\frac{f(ax)}{f(a(x-1))}\right|=a!\exp\left(\int_{0}^{1}\left(\frac{t^{a(x-1)} - t^{ax} + t^{a} - 1}{(1-t)\log t} \right)dt\right) $$
この式の右辺を計算するコードを書かせて、以下の三つの場合に右辺が左辺を積を使った漸化式で表して計算した場合と等しいかを検証しました。
$a=1,x=2.5$
$a=1,x=4$
$a=2,x=2$

      import numpy as np
from scipy.integrate import quad
from math import factorial, exp

def rhs(a, x):
    if a <= 0 or int(a) != a:
        raise ValueError("a must be a positive integer")
    if x <= 1 - 1/a:
        raise ValueError("x must satisfy x > 1 - 1/a")

    def integrand(t):
        return (
                t**(a*(x-1))
                - t**(a*x)
                + t**a
                - 1
            ) / ((1 - t) * np.log(t))
    
    I, err = quad(integrand, 0, 1, points=[0, 1])
    
    return factorial(a) * exp(I)

a = 1
x = 2.5

value = rhs(a, x)
print(value)
a = 1
x = 4

value = rhs(a, x)
print(value)
a = 2
x = 2

value = rhs(a, x)
print(value)
    

結果

      2.500000000000785
4.000000000001496
11.99999999976475
    
      import math
import numpy as np
from scipy.integrate import quad


def integrand(t, a, x):
    """被積分関数: (t^{a(x-1)} - t^{ax} + t^a - 1) / ((1-t) * log(t))"""
    if t <= 0.0:
        return 0.0

    # t -> 1 の極限値は a^2 * (x - 1) に収束する
    if np.isclose(t, 1.0):
        return a**2 * (x - 1)

    numerator = t ** (a * (x - 1)) - t ** (a * x) + t**a - 1
    denominator = (1 - t) * np.log(t)

    return numerator / denominator


def calculate_rhs(a: int, x: float):
    """数式の右辺 a! * exp( 積分 ) の値を計算する

    パラメータ:
    a: 自然数 (a >= 1)
    x: 実数 (x > 1 - 1/a)
    """
    if a < 1 or not isinstance(a, int):
        raise ValueError("a は 1 以上の自然数である必要があります。")
    if x <= 1 - 1 / a:
        raise ValueError(f"x は 1 - 1/a = {1 - 1/a} より大きい必要があります。")

    # 1. 定積分の計算 (0 から 1 まで)
    integral_val, _ = quad(integrand, 0, 1, args=(a, x))

    # 2. a! * exp(積分値) の計算
    rhs_value = math.factorial(a) * math.exp(integral_val)

    return rhs_value, integral_val


# --- 実行例 ---
if __name__ == "__main__":
    a_val = 1
    x_val = 2.5
    rhs_result, int_val = calculate_rhs(a_val, x_val)
    print(f"パラメータ: a = {a_val}, x = {x_val}")
    print(f"定積分の値   : {int_val:.10f}")
    print(f"計算結果(右辺): {rhs_result:.10f}")
    a_val = 1
    x_val = 4
    rhs_result, int_val = calculate_rhs(a_val, x_val)
    print(f"パラメータ: a = {a_val}, x = {x_val}")
    print(f"定積分の値   : {int_val:.10f}")
    print(f"計算結果(右辺): {rhs_result:.10f}")
    a_val = 2
    x_val = 2
    rhs_result, int_val = calculate_rhs(a_val, x_val)
    print(f"パラメータ: a = {a_val}, x = {x_val}")
    print(f"定積分の値   : {int_val:.10f}")
    print(f"計算結果(右辺): {rhs_result:.10f}")
    

結果

      パラメータ: a = 1, x = 2.5
定積分の値   : 0.9162907319
計算結果(右辺): 2.5000000000
パラメータ: a = 1, x = 4
定積分の値   : 1.3862943611
計算結果(右辺): 4.0000000000
パラメータ: a = 2, x = 2
定積分の値   : 1.7917594692
計算結果(右辺): 11.9999999998
    

$$ \begin{align} &f(Ax)=f(A(x-1)) \prod_{k=0}^{A-1}(Ax-k) \quad (A\in \mathbb Z,\quad 0\le A)\\ &\therefore \frac{f(Ax)}{f(A(x-1))}=\prod_{k=0}^{A-1}(Ax-k) \quad (f(A(x-1))\ne0) \end{align} $$
を用いて、
$$ \left|\frac{f(ax)}{f(a(x-1))}\right| $$

$$ \left|\frac{f(ax)}{f(a(x-1))}\right|=\prod_{k=0}^{a-1}(ax-k) $$
となるので、
$$a=1,x=2.5 \to \left|\frac{f(2.5)}{f(1.5)}\right|=\prod_{k=0}^{0}(2.5-k) =2.5$$
$$a=1,x=4 \to \left|\frac{f(4)}{f(3)}\right|=\prod_{k=0}^{0}(4-k) =4$$
$$a=2,x=2 \to \left|\frac{f(4)}{f(2)}\right|=\prod_{k=0}^{1}(4-k) =12$$
という結果が予想され、少なくとも今回検証した例では値が一致しました。

結論

関数$f(ax)$の方は$a=0$でも定義されるのに対して、導出した式が$a=0$の場合をカバーできていない、$c$の範囲が$a$に依存している、$f(ax)$単体で計算できる形が求まっていない、などの課題が残りました。

おまけ

考察の原点となった式です。

$$ (ax)!=(a(x-1))! \prod_{k=0}^{a-1}(ax-k) \quad (a,x\in \mathbb N,\quad 1\le x) $$

$$ (ax-b)!= \prod_{k=1}^{ax-b}k \quad (a,x,b\in \mathbb N,b\le ax,\quad 1\le x) $$
であり、
仮定より、$a,x\in \mathbb N$なので、$a(x-1)=ax-a$であることから$b=a$とおいて、

$$ \begin{align} &(a(x-1))! \prod_{k=0}^{a-1}(ax-k) = (ax-a)! \prod_{k=0}^{a-1}(ax-k) = \left(\prod_{k=1}^{ax-a}k\right)\left(\prod_{k=0}^{a-1}(ax-k)\right)\\ &=1\times2\times\cdots\times(ax-a)\times(ax-0)(ax-1)\times\cdots\times(ax-(a-2))\times(ax-(a-1))\\ &=1\times2\times\cdots\times(ax-a)\times(ax-a+1)\times(ax-a+2)\times\cdots\times(ax-1)\times ax\\ &=(ax)!\\ \end{align} $$
よって、
$$ (ax)!=(a(x-1))! \prod_{k=0}^{a-1}(ax-k) \quad (a,x\in \mathbb N,\quad 1\le x) $$

投稿日:12日前
数学の力で現場を変える アルゴリズムエンジニア募集 - Mathlog served by OptHub

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。

投稿者

解析学が好きな初学者です

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中