2

Apery様の加速級数

143
1

あいさつ

んちゃ!
今回はゼータ関数の加速級数を発見したので紹介いたします。
使用するのはコネクターだけです。
参考記事:記号や詳細についてはこちらの記事を参照(👈クリック)

Apery様のζ

コネクター

C(n,m)=1(n+mm)k

差分を計算
C(n,m1)C(n,m)=1(n+mm)k{(n+m)kmk1})=l=1k(kl)nlmklmkC(n,m)
今回使用する級数

fN(n)=n<mC(n,m)mN

fN(n1)=2kn1<m1mN(2mm)k+n1<m1mkm<p(m+p)kpN(m+pp)kn1<mm<p1pN(m+pp)k

[1]
fN(n1)fN(n)=n1<mC(n1,m)mNn<mC(n,m)mN=C(n1,n)nN+n<mC(n1,m)C(n,m)mN=(n!)k{(n1)!}knN{(2n1)!}k+n<ml=1k(kl)nklmlC(n,m)nkmN=2knN(2nn)k+1nkl=1k(kl)nkln<mC(n,m)mNl=2knN(2nn)k+1nkl=1k(kl)nklfNl(n)
[3]
fN(n1)=fN(n)+2knN(2nn)k+l=0k(kkl)nklkfN+klk(n)fN(n)=fN(n)+2knN(2nn)k+l=0k(kl)nlkfN+lk(n)fN(n)=fN(n)+2knN(2nn)k+l=0k1(kl)nlkfN+lk(n)=2kn1<m1mN(2mm)k+n1<ml=0k1(kl)1mklfN+lk(m)=2kn1<m1mN(2mm)k+n1<ml=0k1(kl)1mklm<p1pN+lk(m+pp)k=2kn1<m1mN(2mm)k+n1<mm<pl=0k1(kl)1mklpl1pNk(m+pp)k=2kn1<m1mN(2mm)k+n1<mm<p{l=0k(kl)1mklpl1pk}1pNk(m+pp)k=2kn1<m1mN(2mm)k+n1<mm<p(1m+1p)k1pNk(m+pp)kn1<mm<p1pN(m+pp)k=2kn1<m1mN(2mm)k+n1<m1mkm<p(m+p)kpN(m+pp)kn1<mm<p1pN(m+pp)k

ζ(N)=2k0<m1mN(2mm)k+0<m1mkm<p(m+p)kpN(m+pp)k0<mm<p1pN(m+pp)k

直接的証明
[1]
0<m1mkm<p(m+p)kpN(m+pp)k0<mm<p1pN(m+pp)k=0<mm<p(m+p)kmkmkpN(m+pp)k=1<p0<m<p(m+p)kmkmkpN(m+pp)k=1<p1pN0<m<p(m+p)kmkmk(m+pm)k=1<p1pN0<m<p{1(m+p1m1)k1(m+pm)k}=1<p1pN{11(2p1p1)k}=1<p1pN2k1<p1pN(2pp)k
[2]
2k0<m1mN(2mm)k+1<p1pN2k1<p1pN(2pp)k=1+1<p1pN=ζ(N)

0<m1mkm<p(m+p)kmkpk(m+pp)k=0<m1mk(2mm)+0<m1mkm<ppkmkpk(m+pp)

0<m1mkm<p(m+p)kmkpk(m+pp)k=0<m1mkm<p(m+p)kpkpk(m+pp)k+0<m1mkm<ppkmkpk(m+pp)k=0<m1mkm<p{1(m+p1p1)1(m+pp)}+0<m1mkm<ppkmkpk(m+pp)k=0<m1mk(2mm)+0<m1mkm<ppkmkpk(m+pp)

任意の複素数sC(1<Re(s))に対して以下の式が成り立つ。
ζ(s)=(2s+1)0<m1ms(2mm)s+0<m1msm<ppsmsps(m+pp)s

謝罪
KBHMさんにより間違いに気づくことが出来ました。
一旦誤った記述部分は消しました。
まだ改善中です。あと少しのところまで来ました。

確認用コード

import sympy as sp

def binomial(n, k):
    return sp.binomial(n, k)

def compute_rhs(k, max_m=100, max_p=100):
    term1 = sum(1 / (sp.Pow(m, k) * sp.Pow(binomial(2 * m, m), k)) for m in range(1, max_m + 1)) * (sp.Pow(2, k) + 1)
   
    term2 = sum((sp.Pow(p, k) - sp.Pow(m, k)) / (sp.Pow(m, k) * sp.Pow(p, k) * sp.Pow(binomial(m + p, p), k))
                for m in range(1, max_m + 1) for p in range(m + 1, max_p + 1))
   
    return term1 + term2

def matching_digits(x, y):
    if x.is_real and y.is_real:
        x_val = float(x.evalf(50))
        y_val = float(y.evalf(50))
        x_str = f"{x_val:.50f}"
        y_str = f"{y_val:.50f}"
    else:
        x_real, x_imag = float(x.as_real_imag()[0].evalf(50)), float(x.as_real_imag()[1].evalf(50))
        y_real, y_imag = float(y.as_real_imag()[0].evalf(50)), float(y.as_real_imag()[1].evalf(50))
        x_str = f"{x_real:.50f}{x_imag:+.50f}j"
        y_str = f"{y_real:.50f}{y_imag:+.50f}j"

    count = 0
    for a, b in zip(x_str, y_str):
        if a == b:
            count += 1
        else:
            break
    return count

def main(k, max_m=10, max_p=10):
    lhs = sp.N(sp.zeta(k), 20)  # ζ(k) の高精度計算
    rhs = compute_rhs(k, max_m, max_p)

    matched_digits = matching_digits(lhs, rhs)
    print(f"LHS (Zeta Function): {lhs}")
    print(f"RHS (Computed Sum) : {rhs.evalf(20)}")
    print(f"Matching Digits    : {matched_digits}")

if name == "main":
    k = 2 + 0.5j  # 複素数の例
    main(k)
投稿日:224
更新日:35
OptHub AI Competition

この記事を高評価した人

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

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

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. あいさつ
  2. Apery様のζ
  3. 確認用コード