#13 ふれてみよう高校数学 解析(微分・積分・極限)

定積分の計算

リーマン和——面積を「長方形の和」で近似

「曲線の下の面積をどうやって求めるか」——不規則な形の土地の面積を細かく測るとき、小さな四角形に分割して合計する方法が使えます。それが数学の定積分の発想です。

f(x)0f(x) \geq 0 の区間 [a,b][a, b] における曲線下の面積を求めるため、区間を nn 等分して幅 Δx=ban\Delta x = \dfrac{b-a}{n} の細い長方形で近似します:

k=1nf(xk)Δx(xk=a+kΔx)\sum_{k=1}^{n} f(x_k) \Delta x \quad (x_k = a + k\Delta x)

nn \to \infty で長方形が無限に細くなり、面積に収束します。この極限を定積分と定義します——「細かく刻むほど正確になる」:

abf(x)dx=limnk=1nf(xk)Δx\int_a^b f(x)\,dx = \lim_{n \to \infty} \sum_{k=1}^{n} f(x_k)\Delta x

微分積分学の基本定理

毎回リーマン和の極限を計算するのは大変です。そこで登場するのが微分積分学の基本定理(Fundamental Theorem of Calculus)——「積分と微分は逆の関係にある」という、数学史上最も重要な定理のひとつです:

第 1 部(微分形)

「積分して微分すると元に戻る」——上限 xx を変数にした積分を xx で微分すると被積分関数そのものになります:

ddxaxf(t)dt=f(x)\frac{d}{dx}\int_a^x f(t)\,dt = f(x)

第 2 部(計算形)

「面積の計算が原始関数の差だけで求まる」——この定理があるから積分計算が実用的になります:

F(x)=f(x)F'(x) = f(x) ならば:

abf(x)dx=F(b)F(a)=[F(x)]ab\int_a^b f(x)\,dx = F(b) - F(a) = \bigl[F(x)\bigr]_a^b

この定理により、面積計算が「原始関数の差」として計算できます——「リーマン和の極限を地道に求めなくてよい」のです。


計算例

例 102x2dx\displaystyle\int_0^2 x^2\,dx——「放物線 y=x2y = x^2xx 軸の間の面積」:

F(x)=x33F(x) = \dfrac{x^3}{3} なので:

02x2dx=[x33]02=830=832.667\int_0^2 x^2\,dx = \left[\frac{x^3}{3}\right]_0^2 = \frac{8}{3} - 0 = \frac{8}{3} \approx 2.667

例 20πsinxdx\displaystyle\int_0^\pi \sin x\,dx——「sin\sin の山が 1 つ分の面積」:

=[cosx]0π=cosπ(cos0)=1+1=2= \bigl[-\cos x\bigr]_0^\pi = -\cos\pi - (-\cos 0) = 1 + 1 = 2

例 31e1xdx\displaystyle\int_1^e \frac{1}{x}\,dx——「x=1x = 1 から x=ex = e までの 1/x1/x の面積はちょうど 1」:

=[lnx]1e=lneln1=10=1= \bigl[\ln x\bigr]_1^e = \ln e - \ln 1 = 1 - 0 = 1

デモ:リーマン和の収束

マウスを左右に動かすと長方形の数 nn11 から 5050 まで変化します。nn が増えるにつれてリーマン和が 02x2dx=8/3\int_0^2 x^2\,dx = 8/3 に近づく様子を確認できます。

y=x² の定積分([0,2])をリーマン和で近似。マウスで n を変える。
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();

定積分の性質

「定積分にも足し算・かけ算と似た便利な性質がある」——これらを使うと計算が楽になります:

abf(x)dx=baf(x)dx\int_a^b f(x)\,dx = -\int_b^a f(x)\,dx abf(x)dx+bcf(x)dx=acf(x)dx\int_a^b f(x)\,dx + \int_b^c f(x)\,dx = \int_a^c f(x)\,dx ab[f(x)±g(x)]dx=abf(x)dx±abg(x)dx\int_a^b [f(x) \pm g(x)]\,dx = \int_a^b f(x)\,dx \pm \int_a^b g(x)\,dx abcf(x)dx=cabf(x)dx\int_a^b c \cdot f(x)\,dx = c\int_a^b f(x)\,dx

絶対値がある場合

「グラフが xx 軸の下側に潜るとき、面積は足し算ではなく絶対値で計算する」——f(x)f(x) が区間内で符号変化する場合、面積を求めるには:

面積=abf(x)dx\text{面積} = \int_a^b |f(x)|\,dx

符号変化点を cc として——「マイナスの部分はひっくり返して足す」:

=acf(x)dx+cb(f(x))dx(f<0 on (c,b))= \int_a^c f(x)\,dx + \int_c^b (-f(x))\,dx \quad (f < 0 \text{ on } (c,b))

奇関数・偶関数の積分

「左右対称なグラフの積分には便利な公式がある」——[a,a][-a, a] での積分:

f が偶関数(f(x)=f(x)aaf(x)dx=20af(x)dxf \text{ が偶関数}(f(-x)=f(x))\Rightarrow \int_{-a}^a f(x)\,dx = 2\int_0^a f(x)\,dx f が奇関数(f(x)=f(x)aaf(x)dx=0f \text{ が奇関数}(f(-x)=-f(x))\Rightarrow \int_{-a}^a f(x)\,dx = 0

例:11x3dx=0\displaystyle\int_{-1}^1 x^3\,dx = 0(奇関数:左右でキャンセル)、11x2dx=201x2dx=23\displaystyle\int_{-1}^1 x^2\,dx = 2\int_0^1 x^2\,dx = \dfrac{2}{3}(偶関数:左右が同じ)


まとめ

abf(x)dx=[F(x)]ab=F(b)F(a)\int_a^b f(x)\,dx = \bigl[F(x)\bigr]_a^b = F(b) - F(a)
  • リーマン和の極限が定積分の定義——「細かい長方形の和の極限が面積」
  • 基本定理により「原始関数の差」で計算可能——「積分と微分は逆の関係」
  • 面積はリーマン和で数値近似もできる——「コンピュータで数値積分するときはこの方法」

次回は面積・体積への応用——2曲線に挟まれた面積と回転体の体積を求めます。