回 7-2 分野 7 微分と積分
区分求積法は、0 から 1 の幅を n 等分し、高さ f(k/n) の細い長方形の面積 (1/n) × f(k/n) を全部足して、n を大きくしたときの極限で面積 (定積分) を出す考え方です。公式は lim (1/n) Σ f(k/n) = ∫ f(x)dx (k は 1 から n、積分は 0 から 1) です。f(x) = x² なら和は n が 10 で 0.385、1000 で約 0.3338 と、積分の値 1/3 に近づきます。
細かく分けて足すという積分の芯を、長方形の和、乱数の点、累積和の 3 つの形で、Python で数えて確かめます。
文 ゆめさくコード編集部公開 2026年10月30日更新 2026年10月30日出典を確かめた日 2026年10月30日
曲がった形の面積を、どうやって数えるのか
長方形の面積は「幅 × 高さ」で出せます。けれど、y = x² のグラフの下のように、上の辺が曲がった形の面積は、そのままでは出せません。
そこで、形を細い長方形に切り分け、長方形の面積を全部足します。切り方を細かくするほど、はみ出しと足りない所が小さくなり、本当の面積に近づきます。この考えが積分で、高校数学では区分求積法と呼びます。
この回では、長方形の和が積分の値に近づく様子を、n を 10、100、1000 と増やしながら Python で数えて確かめます。乱数の点で面積を見積もるモンテカルロ法と、集計で使う累積和も、同じ「細かく分けて足す」の仲間として扱います。
細かく分けて足す
長方形の和で面積に近づける
y = x² の、x が 0 から 1 の範囲の下の面積を考えます。0 から 1 を n 等分すると、1 つの幅は 1/n です。k 番目の区間の右端は x = k/n なので、そこでの高さ f(k/n) を使うと、長方形の面積は (1/n) × f(k/n) です。
全部足した和 Sₙ は、次の通りです (k は 1 から n)。
Sₙ = (1/n) × {f(1/n) + f(2/n) + … + f(n/n)} = (1/n) Σ f(k/n)
n を大きくした極限で、和は面積 (定積分) に一致します。
lim (1/n) Σ f(k/n) = ∫ f(x) dx (k は 1 から n、極限は n → ∞、積分は 0 から 1)
左辺の 1/n が長方形の幅、f(k/n) が高さ、Σ が足すことを表します。右辺の dx が幅、f(x) が高さ、∫ が足すことに当たります。f が連続な関数なら、この式が成り立ちます。f が負になる所では長方形の高さも負になるので、和と積分は「x 軸より上の面積 − 下の面積」になります。
f(x) = x² では、Sₙ = (1/n) Σ (k/n)² = Σ k²/n³ です。積分の値は 1/3 なので、lim Σ k²/n³ = 1/3 です。
a から b の範囲の形
範囲が 0 から 1 でなく a から b のときは、幅を (b − a)/n にし、k 本目の右端を a + k(b − a)/n にします。
lim ((b − a)/n) Σ f(a + k(b − a)/n) = ∫ f(x) dx (積分は a から b)
a = 0、b = 1 にすると、上の公式に戻ります。
和の極限の問題の解き方
入試でよく出るのは、逆向きの問題です。和の極限を見て、積分に書き直します。手順は次の通りです。
- 和の中から 1/n をくくり出す
- 残りを k/n だけの式にして、f(k/n) の形にする
- k/n が動く範囲 (k = 1 なら 1/n、k = n なら 1) から、積分の範囲を決める (この例では 0 から 1)
- 積分を計算する
たとえば lim Σ 1/(n + k) (k は 1 から n) は、1/(n + k) = (1/n) × 1/(1 + k/n) と書けるので、f(x) = 1/(1 + x) の 0 から 1 の積分で、答えは log 2 (約 0.693) です。
端のずれは、極限では消える
右端の高さ f(k/n) の代わりに、左端の高さ f((k − 1)/n) を使っても、極限は同じです。2 つの和の差は、端の長方形 1 本分 (1/n) × {f(1) − f(0)} だけで、n を大きくすると 0 に近づくからです。同じ理由で、和の始まりが k = 0 でも k = 1 でも、終わりが n − 1 でも n でも、答えは変わりません。
ただし、n が有限のうちは、左端と右端と真ん中で値が違います。y = x² のような増える関数では、右端の和は大きめ、左端の和は小さめに出ます。真ん中の高さを使うと、誤差がずっと小さくなります。
和が n 個でない場合
Σ の k が 1 から 2n まで動くときは、k/n が 0 から 2 まで動きます。だから積分の範囲は 0 から 2 です。幅は 1/n のままで、長方形が 2n 本並びます。積分の範囲は、k/n が動く範囲で決めます。
積の極限は log を取って和にする
かけ算が n 個並んだ式の極限は、log を取ると足し算になり、区分求積法が使えます。たとえば {(n + 1)(n + 2) … (2n) ÷ nⁿ} の n 乗根の極限は、log を取ると (1/n) Σ log(1 + k/n) で、∫ log(1 + x) dx (0 から 1) = 2 log 2 − 1 に近づきます。元に戻すと e^(2 log 2 − 1) = 4/e (約 1.4715) です。
乱数の点で面積を見積もる (モンテカルロ法)
1 辺 1 の正方形の中に、乱数で点をたくさん打ちます。求めたい形の中に入った点の割合が、形の面積の見積もりになります。四分円 (半径 1 の円の 4 分の 1) なら面積は π/4 なので、割合を 4 倍すると円周率の見積もりになります。
点の数を増やすほど見積もりは本当の値に近づきますが、近づき方はゆっくりです。誤差のおよその大きさは 1/√N に比例し、誤差を 10 分の 1 にするには点を 100 倍にする必要があります。そのかわり、次元が高い (変数が多い) 積分でも同じ手順で使えます。
累積和は、先に足しておく積分
日ごとの数を 1 日目から順に足した並びを累積和と呼びます。累積和を先に作っておけば、「3 日目から 6 日目までの合計」は、6 日目までの累積和から 2 日目までの累積和を引く 1 回の引き算で出せます。速さを足すと進んだ距離になるように、変化の量を足し上げると全体の量になる、という積分の考えと同じ形です。
動かして確かめる
1 本目は、y = x² の 0 から 1 の面積を、右端、左端、真ん中の長方形の和で求め、n を増やします。右端の和は Σ k²/n³ と同じです。
動かす 長方形の和が 1/3 に近づく
実行すると、次の通りに出ます
n 右端 左端 真ん中
10 0.385 0.285 0.3325
100 0.33835 0.32835 0.333325
1000 0.333834 0.332834 0.333333
1/3 0.333333
右端の和は大きめ、左端の和は小さめに出て、n を増やすとどちらも 1/3 に近づきます。n = 10 の右端の和 0.385 は、Σ k²/n³ で n = 10 とした値です。右端と左端の差は 1/n で、n = 1000 でも 0.001 あります。真ん中の和は、n = 10 ですでに 0.3325 と、誤差が 1000 分の 1 ほどです。
2 本目は、入試の形の和の極限を 3 つ、n を増やして確かめます。1 つ目は Σ 1/(n + k) で答えは log 2、2 つ目は k が 1 から 2n の Σ k/n² で答えは 0 から 2 の ∫ x dx = 2、3 つ目は積の極限で答えは 4/e です。
動かす 和の極限を数で確かめる
実行すると、次の通りに出ます
10 0.66877 2.1 1.52278
1000 0.6929 2.001 1.47203
100000 0.69314 2.00001 1.47152
答え 0.69315 2 1.47152
3 つとも、n を増やすと答えに近づきました。2 つ目は k が 2n まで動くので積分の範囲が 0 から 2 になり、0 から 1 にすると答えを 1/2 と取り違えます。3 つ目は log を取って和にしてから区分求積法を使い、最後に exp で元に戻しています。
3 本目は、モンテカルロ法で円周率を見積もります。種を固定しているので、何度動かしても同じ数が出ます。出力の列は、点の数、見積もった円周率、本当の円周率との差です。
動かす 乱数の点で面積を見積もる
実行すると、次の通りに出ます
1 回ずつ
100 3.08 0.0616
10000 3.1496 0.008
100000 3.15332 0.0117
20 回の誤差の平均
100 0.158
1000 0.0366
10000 0.0113
1 回ずつの結果を見ると、10 万点の誤差 0.0117 は、1 万点の 0.008 より大きく出ました。モンテカルロ法の 1 回の答えは乱数で前後するので、点を増やせば毎回必ず近づくわけではありません。そこで、同じ点の数で 20 回ずつ試し、誤差の平均を比べました。点を 10 倍にするごとに、誤差の平均は約 4.3 分の 1、約 3.2 分の 1 と減りました。1/√N に比例するなら 10 倍で約 3.2 分の 1 (1/√10 は約 0.32) で、20 回の平均でも乱数の揺れは残りますが、目安に近い減り方です。
1 本目の真ん中の長方形の和は、n = 1000 で誤差が 100 万分の 1 より小さくなりました。変数が 1 つの積分なら長方形の和のほうがずっと正確で、モンテカルロ法は変数が多い積分で生きます。
4 本目は、累積和です。7 日分のアクセス数から累積和を作り、区間の合計を引き算 1 回で出します。
動かす 累積和で区間の合計を出す
実行すると、次の通りに出ます
[0, 120, 210, 360]
[440, 640, 810, 870]
3〜6 日目 600
確かめ 600
全部 870
累積和の並びは、0 から始めて 1 日ずつ足した数です (長いので 2 行に分けて出しています)。3 日目から 6 日目までの合計 600 は、6 日目までの 640 から 2 日目までの 210 を引いて出しました。sum で直接足した数と同じです。区間の合計を何度も聞かれるときは、累積和を 1 回作っておけば、1 回あたり引き算 1 回で答えられます。
細かく分けて足すときに外れる所
n が有限のうちは、誤差が残る
区分求積法の公式は極限の話で、n が有限なら和と積分の値はずれます。右端と左端の和の誤差はおよそ 1/n に比例し、真ん中の和はおよそ 1/n² に比例して小さくなります (関数がなめらかなとき)。計算に使うときは、どの和を使い、n をいくつにするかで、誤差を見積もってから決めます。
小数で足すと、足す回数が多いほど誤差がたまる
計算機の小数は、1 回ごとにわずかな丸めの誤差があります。n を 1 億のように大きくすると、長方形の誤差は小さくなっても、足し算の丸めの誤差がたまっていきます。Python の math.fsum は、丸めの誤差を抑えて足す関数です。
モンテカルロ法の結果は、乱数で変わる
モンテカルロ法の答えは、使った乱数で変わります。種を固定すれば同じ答えが出ますが、それは偶然の 1 回分です。答えのばらつきの大きさも一緒に見積もるか、種を変えて何度か回して比べます。
仕事とコンテストでどう使うか
細かく分けて足す考えを使う場面は、次の通りです。
- 確率の計算。連続の値を取る確率は、確率の密度の関数の下の面積で表される。正規分布 (5-2) で「ある値より上の割合」を出すのは、この面積の計算
- シミュレーション。式で解けない確率や期待値を、乱数で何度も試して見積もる。リスクの見積もり、待ち行列の長さ、ゲームの当たりの確率など
- 集計。日ごと、時間ごとの数の累積和を作り、期間の合計や、ある日までの合計を速く出す。売上の累計、ダッシュボードの数
- 競技プログラミング。累積和は「区間の和を何度も聞かれる」問題の定番で、2 次元の表にも広げられる
- 物理とゲームの動き。速さを細かい時間ごとに足して位置を進める計算は、区分求積法と同じ形
よくある問い
区分求積法の公式はどう覚えればよいですか
公式の 1/n を「幅」、f(k/n) を「高さ」、Σ を「足す」と読み、∫ f(x) dx の dx、f(x)、∫ に 1 つずつ対応させます。式の形より、細い長方形を並べた絵を思い浮かべると、範囲が 0 から 1 になる理由 (k/n が 0 近くから 1 まで動く) も一緒に分かります。
和の始まりが k = 0 でも答えは同じですか
同じです。k = 0 の 1 項は (1/n) × f(0) で、n を大きくすると 0 に近づくからです。ただし、ずれる項の数が n に比例して増える場合 (たとえば k が n から 2n まで動く) は、範囲が変わるので、k/n の動く範囲を数え直します。
区分求積法とモンテカルロ法はどう使い分けますか
変数が 1 つや 2 つの積分は、区分求積法の考え (長方形の和) のほうが、同じ計算の回数で正確です。変数が 10 や 100 ある積分は、格子に切ると長方形の数が膨大になるので、次元によらず同じ手順で使えるモンテカルロ法が向きます。
累積和はどんなときに使いますか
同じ並びに対して、区間の合計を何度も求めるときです。毎回足すと 1 回あたり区間の長さだけ足し算が要りますが、累積和を先に作れば 1 回の引き算で済みます。並びの値が途中で変わる場合は、累積和を作り直すか、別の仕組みを使います。
確認クイズ
答えだと思う選択肢を押すと、その場で正誤と理由が開きます。3 問すべてに正しく答えると、この回は修了で、石が緑に変わります (この端末のブラウザに残ります)。間違えた問いは、あとから解き直せます。
1 問目
lim Σ k/n² (k は 1 から n、n → ∞) の値はどれですか。
2 問目
y = x² の 0 から 1 の面積を、n = 10 の長方形の和で求めます。誤差が一番小さいのはどれですか。
3 問目
このコードを動かすと何が出ますか。
days = [5, 3, 4, 6]
acc = [0]
for d in days:
acc.append(acc[-1] + d)
print(acc[4] - acc[1])
説明課題
「y = x² の 0 から 1 の面積を、細い長方形の和で求めると 1/3 に近づく理由」を、幅、高さ、n を大きくするの言葉を使って 3 文で説明してください。書いたら、下の模範解答を開いて比べてください。
模範解答
自分の説明を書いてから開いて、比べてください。
0 から 1 を n 等分すると、1 本の長方形の幅は 1/n で、k 本目の高さを右端の値 (k/n)² にすると、面積の和は (1/n) Σ (k/n)² になる。長方形はグラフから少しはみ出すが、はみ出す量は全部合わせても端の 1 本分ほどで、n を大きくして幅を細くするほど小さくなる。だから n を大きくした極限で、和は曲がった形の面積、つまり ∫ x² dx = 1/3 に一致する。
細かく分けて足す、乱数で面積を見積もる、先に足しておく、の 3 つの手を持つと、確率の計算、シミュレーション、集計の処理を同じ考えで組み立てられます。いまの自分が転職までの道のどの段にいるかは、転職診断で確かめられます。
もっと深く
この回の続きを、ゆめさくのコースの章や道具で深められます。頁の中の確認クイズに答えたあと、手を動かす量を増やしたいときに使ってください。
一次資料
どれも 2026年10月30日に開いて、題と中身を確かめました。