科学・技術
立方和を差分表で求める方法
Sum of Cubes via Difference Tables (leancrew.com)
要約
この記事は、Numberphileの動画で紹介されたグラフ的アプローチとは異なる、差分表を用いた立方和の公式(∑m=1nm³ = 1/4 n²(n+1)²)の導出方法を探求しています。著者は、差分表の作成、多項式の次数特定、係数の解法(計算機または逐次処理)を実演し、数学的な工夫なしに結果を得る方法を示しています。
全文翻訳
そして、今、私が言ったことはすべてこれです。私が言ったことは間違っていたか、あるいは誤解されたかのどちらかです。
次の投稿 前の投稿
立方和を差分表で求める方法
2026年7月19日 午後9時07分 Dr. Drang 著
昨日、私は最新のNumberphileのビデオを見ました。その中で、Ben Sparksはいくつかの有限級数と、それらの和の計算を単純化する方程式を説明しています。彼はそれらをグラフ的に導出しており、特に立方和の公式は非常に巧妙にできています。そのアイデアは、N=∑m=1nm³ に対してnの単純な多項式表現を得ることです。
私が言ったように、Benのグラフによる方法は本当に巧妙で理解しやすく、この式につながります:N=1/4n²(n+1)²。
私は、非グラフ的で工夫の少ない方法で同じ結果を得ることができるかどうかを確認したかったのです。思いついた方法は、いくつかの値を生成し、それらをテーブルに入れ、差分を取り始めることでした。
以下は、n、N、および最初の4つの差分の値です:
n N Δ Δ² Δ³ Δ⁴
1 1 8 19 18 6
2 9 27 37 24 6
3 36 64 61 30
4 100 125 91
5 225 216
6 441
差分は、前の列を見て、同じ行の値から次の行の値を引くことによって計算されます。このようなことは手作業でもかなり簡単ですが、スプレッドシートでは非常に簡単です。
これはNumbersのスプレッドシートでのテーブルのスクリーンショットです。最初の差分、Δの数式を表示しています:
この数式はすべての差分セルにフィルできるため、非常に簡単です。(上記のテーブルには最初の6行しか含めていません。なぜなら、4番目の差分列、Δ⁴のすべての値が同じであることを信頼していただけると考えたからです。)
4番目の差分列の定数値は、Nがnの4次多項式であることを意味します:N=a₀+a₁n+a₂n²+a₃n³+a₄n⁴。
定数である4番目の差分が6なので、a₄=6/4!=6/24=1/4であることがわかります。
これは、差分が微分に類似しており、d⁴N/dn⁴=4⋅3⋅2⋅1⋅a₄=24a₄であるという事実から来ています。
多項式の次数がわかり、a₄がわかったら、nとNの4つの異なる値に対して4つの連立方程式を解くことで、他の係数を求めることができます。例えば:
a₀+a₁⋅1+a₂⋅1²+a₃⋅1³+1/4⋅1⁴=1
a₀+a₁⋅2+a₂⋅2²+a₃⋅2³+1/4⋅2⁴=9
a₀+a₁⋅3+a₂⋅3²+a₃⋅3³+1/4⋅3⁴=36
a₀+a₁⋅4+a₂⋅4²+a₃⋅4³+1/4⋅4⁴=100
計算した6つのNのうちどれでも4つ使用できますが、最初の4つが便利です。
PythonのNumPyとlinalgサブモジュールのsolve関数を使って解いてみましょう。対話的に行うことができます:
python:
from numpy import np
m = np.array([[1, 1, 1, 1],
[1, 2, 4, 8],
[1, 3, 9, 27],
[1, 4, 16, 64]])
b = np.array([1 - 1**4/4,
9 - 2**4/4,
36 - 3**4/4,
100 - 4**4/4])
np.linalg.solve(m, b)
最後の行は以下を返します:
python:
array([ 1.77635684e-15, -3.99680289e-15, 2.50000000e-01, 5.00000000e-01])
解配列の最初の2つの要素は、浮動小数点数の下限に近い値です。したがって、a₀=0、a₁=0、a₂=1/4、a₃=1/2と言えます。
したがって、N=1/4n⁴+1/2n³+1/4n²となります。項をまとめると、N=1/4n²(n+1)²となり、これはBenがビデオで示した公式と同じです。
Mathematicaで同様のことを行うと:
m = {{1, 1, 1, 1},
{1, 2, 4, 8},
{1, 3, 9, 27},
{1, 4, 16, 64}};
b = {1 - 1^4/4, 9 - 2^4/4, 36 - 3^4/4, 100 - 4^4/4};
LinearSolve[m, b]
これは {0, 0, 1/4, 1/2} を返します。
これはPythonの回答と同じですが、浮動小数点精度を気にする必要がありません。
連立方程式を解く3番目の方法は、スプレッドシートで行うことです。Numbersでの様子は以下の通りです:
黄色いセルのブロックはPythonとMathematicaの解における行列mです。マゼンタ色のセルのブロックはmの逆行列です。シアン色のセルのブロックはPythonとMathematicaの解におけるベクトルbです。灰色のセルのブロックは、マゼンタ色の行列にシアン色のベクトルを掛けることによって求められたa₀からa₃までの解です。
スプレッドシートはMINVERSEとMMULTの組み合わせを使用しており、これらの関数はExcelやGoogle Sheetsにもあります。
Pythonの解と同様に、ここでも浮動小数点演算のアーティファクトがあります。ほとんどは4桁までしか表示しないように選択したため隠されていますが、a₁の-0.0000はこれらが正確な答えではないことを示唆しています。
すでに差分表を作成するためにスプレッドシートを開いているのに、連立方程式を解くためにPythonやMathematicaを使うのはなぜだろうか、とあなたは尋ねるかもしれません。その答えは、数式や表現が常に表示されている環境で作業することを一般的に好むからです。デバッグが容易になり、常にデバッグしています。
係数を決定する他の方法もあります。私のお気に入りは、多項式の次数を一度に1つずつ単純化する段階的な手順です。
上記の差分表からa₄=1/4であることがわかっているので、P=N−1/4n⁴とその差分の新しいテーブルを作成できます。Nから4次項を差し引くことで、Pは3次多項式になると予想されます。
以下は、Pの差分表の最初の5行です:
n P Δ Δ² Δ³
1 0.75 4.25 6.50 3.00
2 5.00 10.75 9.50 3.00
3 15.75 20.25 12.50
4 36.00 32.75
5 68.75
予想通り、3番目の差分で一定になります。a₄を求めるのと同じテクニックを使用して、a₃=3/3!=3/6=1/2と言うことができます。
次に、Q=P−1/2n³とその差分のテーブルを作成します。以下は、そのテーブルの最初の4行です:
n Q Δ Δ²
1 0.25 0.75 0.50
2 1.00 1.25 0.50
3 2.25 1.75
4 4.00
これらは2番目の差分で一定になり、a₂=1/2! = 1/2と言うことができます。
最後に、R=Q−1/2n²のテーブルを作成します。これは以下のようになります:
n R
1 0.00
2 0.00
3 0.00
4 0.00
すべてのRの値がゼロなので、残りの係数、a₁とa₀はゼロでなければならず、これで完了です。
a₁=a₀=0である理由が明白でない場合は、次のように考えてください:
R = N−a₄n⁴−a₃n³−a₂n² = a₀+a₁n+a₂n²+a₃n³+a₄n⁴−a₄n⁴−a₃n³−a₂n² = a₀+a₁n
Rがすべてのnの値に対してゼロになる唯一の方法は、a₁=a₀=0であることです。
これらのテーブルを作成するのはかなり簡単ですが、連立方程式を構築して解くほど速くはありません。それでも、このようにして答えにたどり着くことには満足感があります。これは基本的に再帰的な解決策であり、各ステップで問題を単純化しています。
差分表を使って立方和の公式を解き明かすことは、ビデオで示されたグラフ的な方法ほど洗練されていませんが、工夫を必要としないという利点があります。私は工夫に反対しているわけではありませんが、時には問題をセットアップし、数学的なクランクを回して答えを得たいと思うことがあります。
次の投稿 前の投稿
サイト検索
メタ
drangian at leancrew
ブログアーカイブ
RSSフィード
JSONフィード
Mastodon
GitHubリポジトリ
最近の投稿
クレジット
この作品はクリエイティブ・コモンズ 表示-継承 3.0 非移植ライセンスの下でライセンスされています。
© 2005–2026, Dr. Drang