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

指数・対数の微分

ネイピア数 ee とは

「1 年間に 100% の利子が複利でつくとき、元金 1 円は最終的にいくらになるか」——1 円が 2 円になるのは単利ですが、複利の頻度を増やしていくと徐々に増えていきます。無限に分割した極限が e2.718e \approx 2.718\ldots です。

自然指数関数の底 ee は次の極限で定義されます:

e=limn(1+1n)n2.71828e = \lim_{n \to \infty}\left(1 + \frac{1}{n}\right)^n \approx 2.71828\ldots

等価な表現として:

e=limh0(1+h)1/he = \lim_{h \to 0}(1 + h)^{1/h}

exe^x の微分

ddxex=ex\frac{d}{dx}e^x = e^x

これは数学で最も驚くべき公式の一つです——「exe^x は微分しても変わらない」。つまり「どの点でも、その点の高さが接線の傾きと同じ」という驚くべき性質です。

証明

差分商から——「exe^x の変化量を小さな hh で割った値の極限を求める」:

ex+hexh=exeh1h\frac{e^{x+h} - e^x}{h} = e^x \cdot \frac{e^h - 1}{h}

ee の定義より limh0eh1h=1\displaystyle\lim_{h \to 0}\dfrac{e^h - 1}{h} = 1 なので——「ee の定義から自動的に導ける」:

ddxex=ex1=ex\frac{d}{dx}e^x = e^x \cdot 1 = e^x

一般の指数関数

ee 以外の底でも、lna\ln a という係数がつくだけ」:

ddxax=axlna\frac{d}{dx}a^x = a^x \ln a

a=ea = e のとき lne=1\ln e = 1 なので exe^x に帰着)


lnx\ln x の微分

ddxlnx=1x(x>0)\frac{d}{dx}\ln x = \frac{1}{x} \quad (x > 0)

証明

exe^xlnx\ln x が逆関数の関係であることを使う」——y=lnxy = \ln x とすると x=eyx = e^y。両辺を xx で微分(陰関数微分):

1=eydydx    dydx=1ey=1x1 = e^y \cdot \frac{dy}{dx} \implies \frac{dy}{dx} = \frac{1}{e^y} = \frac{1}{x}

eye^yxx と同じなので 1x\frac{1}{x}」——exe^x の微分から自然に導けます。


デモ:接線の傾き = yy の値

y=exy = e^x の接線の傾きはいつも exe^x 自身——つまり「傾き = 高さ」という性質があります。マウスで xx を動かすと、接線と現在の yy 値が表示され、両者が一致することが確認できます。

y = eˣ の接線傾きは常に eˣ に等しい。マウスで確認。
function loop() {
ctx.clearRect(0, 0, W, H);
var scale=55;
var ox=130, oy=H*0.85;

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='10px monospace';
  ctx.textAlign='center';
  for(var i=-2;i<=5;i++){
    if(i===0)continue;
    ctx.fillText(i,toSx(i),oy+14);
  }
  ctx.textAlign='right';
  for(var j=1;j<=4;j++){
    ctx.fillText(j,ox-6,toSy(j)+4);
  }
}

function plotCurve(fn,color,lw){
  ctx.strokeStyle=color;ctx.lineWidth=lw||2;
  ctx.beginPath();
  var first=true;
  for(var xi=-ox;xi<=W-ox;xi+=1){
    var x=xi/scale;
    var y=fn(x);
    if(!isFinite(y)||y>H/scale+1||y<-0.5){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();

// e^x curve
plotCurve(function(x){return Math.exp(x);},'#4fc3f7',2.5);

// ln x curve
plotCurve(function(x){
  if(x<=0)return NaN;
  return Math.log(x);
},'rgba(255,138,101,0.7)',2);

// Mouse position
var x0=(mx-ox)/scale;
x0=Math.max(-1.8,Math.min(2.8,x0));
var y0=Math.exp(x0);
var slope=y0; // derivative = e^x

// Tangent line for e^x
var ext=1.5;
var y_at_minus=y0+slope*(-ext);
var y_at_plus=y0+slope*ext;
if(y_at_minus>0 && y_at_minus<H/scale && y_at_plus>0 && y_at_plus<H/scale){
  ctx.strokeStyle='rgba(255,202,40,0.9)';
  ctx.lineWidth=1.5;
  ctx.beginPath();
  ctx.moveTo(toSx(x0-ext),toSy(y_at_minus));
  ctx.lineTo(toSx(x0+ext),toSy(y_at_plus));
  ctx.stroke();
}

// Dashed from point to axes
ctx.setLineDash([3,3]);
ctx.strokeStyle='rgba(79,195,247,0.3)';
ctx.lineWidth=1;
ctx.beginPath();ctx.moveTo(toSx(x0),toSy(y0));ctx.lineTo(toSx(x0),oy);ctx.stroke();
ctx.beginPath();ctx.moveTo(toSx(x0),toSy(y0));ctx.lineTo(ox,toSy(y0));ctx.stroke();
ctx.setLineDash([]);

// Point on curve
ctx.beginPath();ctx.arc(toSx(x0),toSy(y0),6,0,Math.PI*2);
ctx.fillStyle='#ffca28';ctx.fill();

// Visual: arrow showing slope = height
ctx.strokeStyle='rgba(255,202,40,0.5)';
ctx.lineWidth=1;
ctx.beginPath();ctx.moveTo(ox,toSy(y0));ctx.lineTo(toSx(x0),toSy(y0));ctx.stroke();

// Info box
ctx.fillStyle='rgba(0,0,0,0.7)';
ctx.fillRect(8,8,260,88);
ctx.font='13px monospace';ctx.textAlign='left';
ctx.fillStyle='#4fc3f7';
ctx.fillText('x = '+x0.toFixed(3),14,28);
ctx.fillText('y = eˣ = '+y0.toFixed(4),14,46);
ctx.fillStyle='#ffca28';
ctx.fillText('接線傾き = eˣ = '+slope.toFixed(4),14,64);
ctx.fillStyle='rgba(255,255,255,0.5)';
ctx.fillText('← 傾き=高さ !',14,82);

// Legend
ctx.font='12px sans-serif';ctx.textAlign='right';
ctx.fillStyle='#4fc3f7';ctx.fillText('── y = eˣ',W-10,H-28);
ctx.fillStyle='rgba(255,138,101,0.8)';ctx.fillText('── y = ln x',W-10,H-10);

requestAnimationFrame(loop);
}
loop();

連鎖律との組み合わせ

exe^x の強みは連鎖律と相性が良いこと」——中身がどれだけ複雑でも、外側の ee はそのまま残ります:

ddxe3x=e3x3=3e3x\frac{d}{dx}e^{3x} = e^{3x} \cdot 3 = 3e^{3x} ddxex2=ex2(2x)=2xex2\frac{d}{dx}e^{-x^2} = e^{-x^2} \cdot (-2x) = -2xe^{-x^2} ddxln(x2+1)=1x2+12x=2xx2+1\frac{d}{dx}\ln(x^2+1) = \frac{1}{x^2+1} \cdot 2x = \frac{2x}{x^2+1} ddx[ln(sinx)]=cosxsinx=cotx\frac{d}{dx}[\ln(\sin x)] = \frac{\cos x}{\sin x} = \cot x

対数微分法

「複雑な積や商の微分に、対数を使うと楽になる」——両辺の対数を取ってから微分するテクニックです:

例:y=xxy = x^x

xxx^x は底も指数も xx なので、普通のべき乗則は使えない」——対数微分法なら対応できます:

lny=xlnx\ln y = x \ln x

両辺を xx で微分(左辺は 1yy\dfrac{1}{y}\cdot y')——「lny\ln y を微分すると yy\frac{y'}{y}」:

yy=lnx+x1x=lnx+1\frac{y'}{y} = \ln x + x \cdot \frac{1}{x} = \ln x + 1 y=y(lnx+1)=xx(lnx+1)y' = y(\ln x + 1) = x^x(\ln x + 1)

指数・対数の微分まとめ

(ex)=ex,(ax)=axlna,(lnx)=1x,(logax)=1xlna(e^x)' = e^x, \quad (a^x)' = a^x \ln a, \quad (\ln x)' = \frac{1}{x}, \quad (\log_a x)' = \frac{1}{x \ln a}

まとめ

  • exe^x は唯一「自分自身が微分」という指数関数——「傾きがいつも高さと同じ」という唯一無二の性質
  • lnx\ln x の微分は 1/x1/x ——「これは有理関数と指数関数を橋渡しする」
  • 連鎖律と組み合わせて複合関数を微分できる——「ee の中身が複雑でも、ee はそのまま残る」
  • 対数微分法で xxx^x のような難しい関数も扱える——「対数をとって両辺を微分する」

次回は微分の応用として増減表と極値——f(x)f'(x) の符号から関数の「山」と「谷」を見つける方法を学びます。