対数積分 li(x) とは
対数積分は \(\operatorname{li}(x)\) と表記され、\(1/\ln(t)\) を 0 から \(x\) まで積分して定義される特殊関数です。被積分関数は \(t = 1\) で特異点をもつため、\(x > 1\) の場合はコーシーの主値として積分を扱います。この関数は解析的整数論で中心的な役割を果たします。素数定理によれば、素数計数関数 \(\pi(x)\) は \(\operatorname{li}(x)\) に漸近し、\(\operatorname{li}(x)\) は \(x\) 以下の素数の個数を近似する最良の簡潔な式の一つです。本ツールでは、オイラー型の \(\operatorname{Li}(x) = \operatorname{li}(x) - \operatorname{li}(2)\) ではなく、下限を 0 とするオフセットなしの \(\operatorname{li}(x)\) を採用しています。
使い方
3 つの値を入力します。\(x\) の初期値、各行ごとに加える増分(ステップ)、そして繰り返し回数(行数)です。各行 \(i\) において \(x = \text{初期値} + i \times \text{ステップ}\) となる表が作成され、対応する \(\operatorname{li}(x)\) の値が並びます。あわせて、\(x\) に対する \(\operatorname{li}(x)\) の折れ線グラフも描画されます。実数として意味のある結果を得るには、開始値を 0 より大きく設定してください。標準的な既定値は 初期値 = 2、ステップ = 0.2、繰り返し 61 回 で、\(x\) が 2.0 から 14.0 までの範囲が一覧表示されます。
計算式の解説
本ツールでは li(x) を次のように計算します。 $$\operatorname{li}(x) = \operatorname{Ei}(\ln x)$$ ここで \(\operatorname{Ei}\) は指数積分です。\(\operatorname{Ei}(z)\) は収束する級数 $$\operatorname{Ei}(z) = \gamma + \ln|z| + \sum_{k=1}^{\infty}\frac{z^{k}}{k\cdot k!}$$ で求めます。\(\gamma = 0.5772156649\ldots\) はオイラー・マスケローニ定数です。級数は、各項が累積和に対して無視できる大きさになるまで加算されます。境界となるケースは標準的な慣例に従い、\(x \le 0\) では 0 を返し、\(x = 1\) では負の無限大(特異点)を返します。
計算例
\(x = 2\) のとき、\(z = \ln 2 = 0.6931472\) です。\(\gamma + \ln|z| + \text{級数}\) を合計すると $$\operatorname{Ei}(0.6931472) = 1.0451638$$ となり、\(\operatorname{li}(2) = 1.04516378011749\) が得られます。これは公表されている基準値と一致します。\(\operatorname{li}(x)\) の唯一の正の実根は \(x = 1.45136923488\)(ラマヌジャン・ゾルトナー定数)にあり、ここで \(\operatorname{li}(x) = 0\) となります。
よくある質問
\(x = 1\) 付近で \(\operatorname{li}(x)\) が発散するのはなぜですか? 被積分関数 \(1/\ln(t)\) は \(t = 1\) で特異点をもつため、\(\operatorname{li}(1) = -\infty\) となり、その付近で関数値が急激に変化します。
これは \(\operatorname{li}(x)\) ですか、それとも \(\operatorname{Li}(x)\) ですか? 下限を 0 とするオフセットなしの \(\operatorname{li}(x)\) です。オフセット版の \(\operatorname{Li}(x)\) は \(\operatorname{li}(2)\) を差し引いたものです。
開始値が 0 や負の数の場合はどうなりますか? \(x \le 0\) では実数としての対数積分が定義されないため、その行については 0 を返します。