極限の概念——無限に近づくとは
極限とは何か
想像してみてください——「半分に切る」を繰り返すゲームをするとします。1メートルのひもを半分に切り、また半分に切り……。ひもの長さは と小さくなっていきます。「永遠に切り続けたらどうなる?」——ひもの長さは 0 に限りなく近づくけれど、永遠にゼロにはなりません。
これが極限の考え方の出発点です。
高校数学の「解析」の出発点は極限(limit)の概念です。
「 が に限りなく近づくとき、 はどんな値に近づくか」——これを
と書きます。ここで重要なのは、「 での値」ではなく、「 を に近づけていく過程」を見ているということです。「ゴールに着いたときの値」ではなく「ゴールに向かう途中でどこへ向かっているか」を調べるのが極限です。
定義から考える:
次の関数を考えてみましょう。
を代入すると分母が になってしまい、 は定義されません( は数学的に無意味です)。
しかし、ちょっと待ってください。分子を因数分解すると:
以外なら、この式は にすっきりと化けます。だから を 1 に近づけていくと:
では定義されていないのに、極限値は として存在します。「 にはなれないが、限りなく近づくと に向かう」——これが極限の醍醐味です。
デモ 1:両側から に近づける
下のデモでは のグラフを描いています。マウスを左右に動かして の位置を変えると、左側・右側どちらから近づけても関数値が に向かっていく様子が確認できます。 の点は「穴あき(open circle)」になっています——ここだけ「値がない」のです。
function loop() {
ctx.clearRect(0, 0, W, H);
var scale = 60;
var ox = W/2, oy = H/2;
function toSx(x){ return ox + x*scale; }
function toSy(y){ return oy - y*scale; }
function drawAxes(){
ctx.strokeStyle='rgba(255,255,255,0.15)';
ctx.lineWidth=1;
ctx.beginPath(); ctx.moveTo(0,oy); ctx.lineTo(W,oy); ctx.stroke();
ctx.beginPath(); ctx.moveTo(ox,0); ctx.lineTo(ox,H); ctx.stroke();
ctx.fillStyle='rgba(255,255,255,0.3)';
ctx.font='11px monospace';
ctx.textAlign='center';
for(var i=-4;i<=4;i++){
if(i===0) continue;
ctx.fillText(i, toSx(i), oy+14);
}
ctx.textAlign='right';
for(var j=-2;j<=4;j++){
if(j===0) continue;
ctx.fillText(j, ox-6, toSy(j)+4);
}
}
function plotCurve(f, color, lw){
ctx.strokeStyle=color; ctx.lineWidth=lw||2;
ctx.beginPath();
var first=true;
for(var xi=-W/2; xi<=W/2; xi+=1){
var x=xi/scale;
var y=f(x);
if(!isFinite(y)||Math.abs(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();
}
ctx.fillStyle='#0d1117';
ctx.fillRect(0,0,W,H);
drawAxes();
// f(x) = (x^2-1)/(x-1) = x+1 for x≠1
// Plot x+1 but skip x=1
plotCurve(function(x){
if(Math.abs(x-1)<0.05) return NaN;
return x+1;
}, '#4fc3f7', 2);
// open circle at (1,2)
ctx.beginPath();
ctx.arc(toSx(1),toSy(2),5,0,Math.PI*2);
ctx.strokeStyle='#4fc3f7';
ctx.lineWidth=2;
ctx.stroke();
ctx.fillStyle='#0d1117';
ctx.fill();
// mouse x position
var xm = (mx - ox)/scale;
var xClamped = Math.max(-3.8, Math.min(3.8, xm));
if(Math.abs(xClamped-1)>0.05){
var ym = xClamped+1;
// vertical dashed line
ctx.setLineDash([4,4]);
ctx.strokeStyle='rgba(255,200,50,0.5)';
ctx.lineWidth=1;
ctx.beginPath(); ctx.moveTo(toSx(xClamped),oy); ctx.lineTo(toSx(xClamped),toSy(ym)); ctx.stroke();
ctx.beginPath(); ctx.moveTo(toSx(xClamped),toSy(ym)); ctx.lineTo(ox,toSy(ym)); ctx.stroke();
ctx.setLineDash([]);
// dot on curve
ctx.beginPath();
ctx.arc(toSx(xClamped),toSy(ym),5,0,Math.PI*2);
ctx.fillStyle='#ffca28';
ctx.fill();
// labels
ctx.fillStyle='#ffca28';
ctx.font='13px monospace';
ctx.textAlign='left';
ctx.fillText('x = '+xClamped.toFixed(3), 12, 24);
ctx.fillText('f(x) = '+(ym).toFixed(3), 12, 42);
// arrow label
ctx.fillStyle='rgba(255,255,255,0.6)';
ctx.font='12px sans-serif';
ctx.fillText('→ 極限値 2 に近づく', 12, 64);
}
// label
ctx.fillStyle='rgba(255,255,255,0.7)';
ctx.font='13px sans-serif';
ctx.textAlign='center';
ctx.fillText('y = (x²−1)/(x−1)', W/2, H-10);
requestAnimationFrame(loop);
}
loop(); 左極限と右極限
極限を厳密に定義するとき、左極限( を左から近づける)と右極限(右から近づける)の両方が一致する必要があります:
どちらか一方でも一致しない場合、極限は存在しません。
たとえば「右から近づけると2に近づくが、左から近づけると別の値に向かう」なら、その点での極限は存在しないということです(次回の連続性で詳しく扱います)。
数列の極限:
関数の極限と並んで重要なのが数列の極限です。
冒頭のひもの例を思い出してください。長さは と続きます。もっと一般的に を考えると:
数列 が のとき に収束するとは:
典型例として を考えると、 が大きくなるにつれて は に限りなく近づきます:
「 のとき 」「 のとき 」——どんどん0に近づきますが、永遠に0にはなりません。
デモ 2: の数列が に収束する様子
function loop() {
ctx.clearRect(0, 0, W, H);
ctx.fillStyle='#0d1117';
ctx.fillRect(0,0,W,H);
var pad=50;
var plotW=W-pad*2;
var plotH=H-pad*2;
var nMax=30;
// axes
ctx.strokeStyle='rgba(255,255,255,0.2)';
ctx.lineWidth=1;
ctx.beginPath(); ctx.moveTo(pad,pad); ctx.lineTo(pad,pad+plotH); ctx.lineTo(pad+plotW,pad+plotH); ctx.stroke();
// y=0 line label
ctx.fillStyle='rgba(100,220,100,0.8)';
ctx.font='12px monospace';
ctx.textAlign='right';
ctx.fillText('0', pad-6, pad+plotH+4);
ctx.fillText('1', pad-6, pad+4);
ctx.textAlign='center';
ctx.fillStyle='rgba(255,255,255,0.4)';
ctx.fillText('n', pad+plotW, pad+plotH+18);
// y=0 dashed line
ctx.setLineDash([5,5]);
ctx.strokeStyle='rgba(100,220,100,0.3)';
ctx.beginPath(); ctx.moveTo(pad,pad+plotH); ctx.lineTo(pad+plotW,pad+plotH); ctx.stroke();
ctx.setLineDash([]);
// hover n from mouse
var hoverN = Math.round(1+(mx/W)*(nMax-1));
hoverN = Math.max(1,Math.min(nMax,hoverN));
for(var n=1;n<=nMax;n++){
var an = 1/n;
var sx = pad + (n-1)/(nMax-1)*plotW;
var sy = pad + plotH - an*plotH;
var isHover = (n===hoverN);
ctx.beginPath();
ctx.arc(sx,sy,isHover?7:4,0,Math.PI*2);
var t=n/nMax; // 0→1
var r=Math.round(79+(1-t)*176);
var g=Math.round(195-(1-t)*80);
ctx.fillStyle=isHover?'#ffca28':('rgb('+r+','+g+',220)');
ctx.fill();
// n labels for some
if(n<=6||n===10||n===20||n===30||isHover){
ctx.fillStyle=isHover?'#ffca28':'rgba(255,255,255,0.5)';
ctx.font=isHover?'bold 12px monospace':'10px monospace';
ctx.textAlign='center';
ctx.fillText(n, sx, pad+plotH+16);
}
}
// show hovered point value
var anH=1/hoverN;
var sxH=pad+(hoverN-1)/(nMax-1)*plotW;
var syH=pad+plotH-anH*plotH;
ctx.setLineDash([3,3]);
ctx.strokeStyle='rgba(255,202,40,0.4)';
ctx.lineWidth=1;
ctx.beginPath(); ctx.moveTo(sxH,syH); ctx.lineTo(sxH,pad+plotH); ctx.stroke();
ctx.setLineDash([]);
ctx.fillStyle='#ffca28';
ctx.font='13px monospace';
ctx.textAlign='left';
var infoX = sxH+10; if(infoX>W-160) infoX=sxH-150;
ctx.fillText('n = '+hoverN, infoX, syH-14);
ctx.fillText('1/n = '+anH.toFixed(4), infoX, syH+4);
ctx.fillStyle='rgba(255,255,255,0.6)';
ctx.font='14px sans-serif';
ctx.textAlign='center';
ctx.fillText('aₙ = 1/n → 0 (n→∞)', W/2, 22);
requestAnimationFrame(loop);
}
loop(); 極限の基本性質
極限は「足し算・引き算・掛け算・割り算」の法則が使えます。複雑な関数の極限も、部品ごとに分解して計算できます。
はさみうちの原理
かつ ならば:
これをはさみうちの原理(Squeeze Theorem)といいます。直接計算しにくい場合に、「上と下からはさむ」戦略です。
たとえば砂時計の砂をイメージしてください。上の瓶と下の瓶の砂の量が同じになる瞬間、間にある砂も同じ量になる——「挟まれているものは、両側が同じ値に近づけば同じ値になる」という発想です。
まとめ
- 極限は「 を近づけていく過程」で関数値が向かう先の値——「ゴールの値」ではなく「向かっている方向」
- で定義されなくても、極限値は存在しうる(穴あきグラフがその例)
- 左極限と右極限が一致するとき、極限が存在する
- 数列 のように の極限も同様の考え方で扱える
- 足し算・掛け算の法則が使え、「はさみうち」という強力な武器もある
次回は関数の連続性——極限値と関数値が一致する場合と、しない場合を詳しく見ていきます。