#14 ふれてみよう高校数学 解析(微分・積分・極限)
面積・体積への応用
2 曲線に挟まれた面積
「2 本の曲線の間に挟まれた隙間の広さを求める」——上の曲線から下の曲線を引いた差を積分するだけです。
2 つの関数 が で成立するとき、2 曲線に挟まれた面積は:
例: と の間の面積
「直線 と放物線 が囲む部分の面積」——まず 2 曲線がどこで交わるか(交点)を調べます:
まず交点を求めます:
では なので——「直線が放物線の上側にある」:
デモ: と の間の面積
2曲線の交点 と の間に挟まれた領域を色付けしています。マウスを左右に動かして「積分の上限」を変化させると、部分面積がリアルタイムに表示されます。
y=x(オレンジ)と y=x²(青)の間の面積。マウスで上限を変化。
function loop() {
ctx.clearRect(0, 0, W, H);
var scale=200;
var ox=60, oy=H-40;
function toSx(x){return ox+x*scale;}
function toSy(y){return oy-y*scale;}
function drawAxes(){
ctx.strokeStyle='rgba(255,255,255,0.18)';
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';
ctx.fillText('0',ox,oy+15);
ctx.fillText('0.5',toSx(0.5),oy+15);
ctx.fillText('1',toSx(1),oy+15);
ctx.textAlign='right';
ctx.fillText('0.5',ox-5,toSy(0.5)+4);
ctx.fillText('1',ox-5,toSy(1)+4);
}
var f1=function(x){return x;}; // y = x (upper)
var f2=function(x){return x*x;}; // y = x² (lower)
ctx.fillStyle='#0d1117';
ctx.fillRect(0,0,W,H);
drawAxes();
// Mouse upper limit 0..1
var xUpper=(mx-ox)/scale;
xUpper=Math.max(0,Math.min(1,xUpper));
// Shade filled area between curves from 0 to xUpper
if(xUpper>0){
ctx.beginPath();
ctx.moveTo(toSx(0),oy);
// upper path: f1 from 0 to xUpper
for(var xi=0;xi<=xUpper*scale;xi+=1){
var x=xi/scale;
ctx.lineTo(toSx(x),toSy(f1(x)));
}
// come back along f2
for(var xi2=xUpper*scale;xi2>=0;xi2-=1){
var x2=xi2/scale;
ctx.lineTo(toSx(x2),toSy(f2(x2)));
}
ctx.closePath();
ctx.fillStyle='rgba(129,199,132,0.3)';
ctx.fill();
ctx.strokeStyle='rgba(129,199,132,0.5)';
ctx.lineWidth=1;
ctx.stroke();
}
// Remaining area (xUpper to 1) if xUpper < 1
if(xUpper<1){
ctx.beginPath();
ctx.moveTo(toSx(xUpper),toSy(f2(xUpper)));
for(var xi3=xUpper*scale;xi3<=scale;xi3+=1){
var x3=xi3/scale;
ctx.lineTo(toSx(x3),toSy(f2(x3)));
}
for(var xi4=scale;xi4>=xUpper*scale;xi4-=1){
var x4=xi4/scale;
ctx.lineTo(toSx(x4),toSy(f1(x4)));
}
ctx.closePath();
ctx.fillStyle='rgba(79,195,247,0.08)';
ctx.fill();
}
// Draw curves
ctx.strokeStyle='#ff8a65';ctx.lineWidth=2.5;
ctx.beginPath();
var first=true;
for(var xi5=0;xi5<=scale;xi5+=1){
var x5=xi5/scale;
if(first){ctx.moveTo(toSx(x5),toSy(f1(x5)));first=false;}
else ctx.lineTo(toSx(x5),toSy(f1(x5)));
}
ctx.stroke();
ctx.strokeStyle='#4fc3f7';ctx.lineWidth=2.5;
ctx.beginPath();first=true;
for(var xi6=0;xi6<=scale;xi6+=1){
var x6=xi6/scale;
if(first){ctx.moveTo(toSx(x6),toSy(f2(x6)));first=false;}
else ctx.lineTo(toSx(x6),toSy(f2(x6)));
}
ctx.stroke();
// Intersection markers
ctx.beginPath();ctx.arc(toSx(0),toSy(0),6,0,Math.PI*2);
ctx.fillStyle='#fff';ctx.fill();
ctx.beginPath();ctx.arc(toSx(1),toSy(1),6,0,Math.PI*2);
ctx.fillStyle='#fff';ctx.fill();
// Vertical marker at xUpper
if(xUpper>0 && xUpper<1){
ctx.setLineDash([4,4]);
ctx.strokeStyle='rgba(255,202,40,0.6)';
ctx.lineWidth=1;
ctx.beginPath();ctx.moveTo(toSx(xUpper),toSy(f1(xUpper)));ctx.lineTo(toSx(xUpper),toSy(f2(xUpper)));ctx.stroke();
ctx.setLineDash([]);
}
// Area value
var area=xUpper*xUpper/2-xUpper*xUpper*xUpper/3;
var totalArea=1/6;
// Info panel
ctx.fillStyle='rgba(0,0,0,0.7)';
ctx.fillRect(W-230,8,222,88);
ctx.font='13px monospace';ctx.textAlign='left';
ctx.fillStyle='#ff8a65';
ctx.fillText('y = x',W-224,28);
ctx.fillStyle='#4fc3f7';
ctx.fillText('y = x²',W-224,46);
ctx.fillStyle='#81c784';
ctx.fillText('面積(0→'+xUpper.toFixed(2)+') = '+area.toFixed(4),W-224,64);
ctx.fillStyle='#ffca28';
ctx.fillText('全面積 = 1/6 ≈ '+totalArea.toFixed(4),W-224,82);
ctx.fillStyle='rgba(255,255,255,0.5)';
ctx.font='12px sans-serif';ctx.textAlign='center';
ctx.fillText('S = ∫₀¹(x−x²)dx = 1/6',W/2,H-12);
requestAnimationFrame(loop);
}
loop(); 回転体の体積
「フィギュアスケートの選手がスピンするとき体が描く立体形状」——曲線を軸の周りに回転させると立体ができます。その体積を円盤法(Disk Method)で求めます:
曲線 を 軸の周りに回転させてできる立体の体積:
各点 での断面が半径 の円盤(disk)になるため、この名前があります——「薄い円盤を積み上げた体積の合計」です。
例: を で回転
「放物線が生み出す回転体——放物面体」の体積:
ワッシャー法(Washer Method)
「2 本の曲線が作るドーナツ断面を積み上げる」——2 つの曲線 の間の回転体:
シェル法(Shell Method)
「薄い筒を積み上げる」—— 軸周りの回転に適した方法:
各 での「筒(シェル)」の体積 を積分します——「バウムクーヘンを薄く切り出して全部足す」イメージです。
弧長(Arc Length)
「道の長さをどうやって測るか」——曲がった曲線の長さも積分で求まります。ピタゴラスの定理を連続版に拡張したものです:
曲線 の における長さ:
例:、 の弧長:
面積と体積の公式まとめ
| 問題 | 公式 |
|---|---|
| 曲線下の面積 | |
| 2曲線の間の面積 | |
| 軸周り回転体 | |
| 軸周り回転体 | |
| 弧長 |
まとめ
- 2曲線の面積:交点を求めて上下の差を積分——「まず交点、次に上から下を引く」
- 回転体:円盤法()の連続版——「薄い円盤を積み上げたイメージ」
- シェル法: 軸周りは を掛けて積分——「薄い筒を積み上げたイメージ」
- 弧長:ピタゴラスの定理の連続版 ——「微小な直角三角形の斜辺を積み上げる」
次回は本シリーズの最終回——微分方程式の入門。解の族が互いに交わらないことをデモで確認します。