定積分の計算
リーマン和——面積を「長方形の和」で近似
「曲線の下の面積をどうやって求めるか」——不規則な形の土地の面積を細かく測るとき、小さな四角形に分割して合計する方法が使えます。それが数学の定積分の発想です。
の区間 における曲線下の面積を求めるため、区間を 等分して幅 の細い長方形で近似します:
で長方形が無限に細くなり、面積に収束します。この極限を定積分と定義します——「細かく刻むほど正確になる」:
微分積分学の基本定理
毎回リーマン和の極限を計算するのは大変です。そこで登場するのが微分積分学の基本定理(Fundamental Theorem of Calculus)——「積分と微分は逆の関係にある」という、数学史上最も重要な定理のひとつです:
第 1 部(微分形)
「積分して微分すると元に戻る」——上限 を変数にした積分を で微分すると被積分関数そのものになります:
第 2 部(計算形)
「面積の計算が原始関数の差だけで求まる」——この定理があるから積分計算が実用的になります:
ならば:
この定理により、面積計算が「原始関数の差」として計算できます——「リーマン和の極限を地道に求めなくてよい」のです。
計算例
例 1:——「放物線 と 軸の間の面積」:
なので:
例 2:——「 の山が 1 つ分の面積」:
例 3:——「 から までの の面積はちょうど 1」:
デモ:リーマン和の収束
マウスを左右に動かすと長方形の数 が から まで変化します。 が増えるにつれてリーマン和が に近づく様子を確認できます。
function loop() {
ctx.clearRect(0, 0, W, H);
var scale=80;
var ox=30, oy=H-30;
function toSx(x){return ox+x*scale;}
function toSy(y){return oy-y*scale;}
function drawAxes(){
ctx.strokeStyle='rgba(255,255,255,0.2)';
ctx.lineWidth=1;
ctx.beginPath();ctx.moveTo(ox,0);ctx.lineTo(ox,H);ctx.stroke();
ctx.beginPath();ctx.moveTo(0,oy);ctx.lineTo(W,oy);ctx.stroke();
ctx.fillStyle='rgba(255,255,255,0.35)';
ctx.font='11px monospace';
ctx.textAlign='center';
for(var i=0;i<=3;i++){
ctx.fillText(i,toSx(i),oy+15);
}
ctx.textAlign='right';
for(var j=0;j<=4;j++){
if(j===0)continue;
ctx.fillText(j,ox-5,toSy(j)+4);
}
}
var f=function(x){return x*x;};
var a=0, b=2;
var exact=8/3;
ctx.fillStyle='#0d1117';
ctx.fillRect(0,0,W,H);
drawAxes();
// n from mouse
var n=Math.round(1+(mx/W)*49);
n=Math.max(1,Math.min(50,n));
var dx=(b-a)/n;
// Draw Riemann rectangles
var riemannSum=0;
for(var k=0;k<n;k++){
var xk=a+(k+1)*dx; // right endpoint
var yk=f(xk);
riemannSum+=yk*dx;
var rx=toSx(a+k*dx);
var rw=toSx(a+(k+1)*dx)-rx;
var rh=toSy(0)-toSy(yk);
// Color based on how close to exact
var err=Math.abs(riemannSum-exact)/exact;
var g=Math.round(100+155*(1-err));
ctx.fillStyle='rgba(79,'+g+',247,0.4)';
ctx.fillRect(rx,toSy(yk),rw,rh);
ctx.strokeStyle='rgba(79,195,247,0.3)';
ctx.lineWidth=0.5;
ctx.strokeRect(rx,toSy(yk),rw,rh);
}
// Draw f(x) = x^2 curve
ctx.strokeStyle='#4fc3f7';
ctx.lineWidth=2.5;
ctx.beginPath();
var first=true;
for(var xi=-ox;xi<=W-ox;xi+=1){
var x=xi/scale;
var y=f(x);
if(x<-0.1||y<0||y>H/scale){first=true;continue;}
if(first){ctx.moveTo(toSx(x),toSy(y));first=false;}
else ctx.lineTo(toSx(x),toSy(y));
}
ctx.stroke();
// Shade exact area lightly
ctx.beginPath();
ctx.moveTo(toSx(a),oy);
for(var xi2=0;xi2<=b*scale;xi2+=1){
var x2=xi2/scale;
ctx.lineTo(toSx(x2),toSy(f(x2)));
}
ctx.lineTo(toSx(b),oy);
ctx.closePath();
ctx.fillStyle='rgba(79,195,247,0.08)';
ctx.fill();
// Error bar
var relErr=Math.abs(riemannSum-exact)/exact*100;
// Info panel
ctx.fillStyle='rgba(0,0,0,0.7)';
ctx.fillRect(W-230,8,222,100);
ctx.font='13px monospace';ctx.textAlign='left';
ctx.fillStyle='rgba(255,255,255,0.8)';
ctx.fillText('n = '+n+' 個の長方形',W-224,28);
ctx.fillStyle='#ffca28';
ctx.fillText('リーマン和 = '+riemannSum.toFixed(4),W-224,46);
ctx.fillStyle='#81c784';
ctx.fillText('真の値 = '+(exact).toFixed(4),W-224,64);
ctx.fillStyle=(relErr<1)?'#81c784':'#ef5350';
ctx.fillText('誤差 = '+relErr.toFixed(2)+'%',W-224,82);
// Convergence label
ctx.fillStyle='rgba(255,255,255,0.5)';
ctx.font='12px sans-serif';ctx.textAlign='center';
ctx.fillText('∫₀² x² dx = 8/3 ≈ 2.6667',W/2,H-12);
requestAnimationFrame(loop);
}
loop(); 定積分の性質
「定積分にも足し算・かけ算と似た便利な性質がある」——これらを使うと計算が楽になります:
絶対値がある場合
「グラフが 軸の下側に潜るとき、面積は足し算ではなく絶対値で計算する」—— が区間内で符号変化する場合、面積を求めるには:
符号変化点を として——「マイナスの部分はひっくり返して足す」:
奇関数・偶関数の積分
「左右対称なグラフの積分には便利な公式がある」—— での積分:
例:(奇関数:左右でキャンセル)、(偶関数:左右が同じ)
まとめ
- リーマン和の極限が定積分の定義——「細かい長方形の和の極限が面積」
- 基本定理により「原始関数の差」で計算可能——「積分と微分は逆の関係」
- 面積はリーマン和で数値近似もできる——「コンピュータで数値積分するときはこの方法」
次回は面積・体積への応用——2曲線に挟まれた面積と回転体の体積を求めます。