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

積・商・合成関数の微分

積の微分法則(Product Rule)

「2 つの数量の掛け算の変化率は、単純にそれぞれの変化率を掛け合わせたものではない」——たとえば、長方形の面積は「縦 × 横」ですが、縦と横が同時に変化するとき、面積の変化率は「縦の変化率 × 横 + 縦 × 横の変化率」になります。

f(x)g(x)f(x) \cdot g(x) の微分は、単純に f(x)g(x)f'(x) \cdot g'(x) ではありません。正しくは:

[f(x)g(x)]=f(x)g(x)+f(x)g(x)[f(x) \cdot g(x)]' = f'(x)g(x) + f(x)g'(x)

語呂合わせ: 「前の微分 × 後ろ」+「前 × 後ろの微分」——「左を微分して右をそのまま足す、右を微分して左をそのまま足す」

h(x)=x2sinxh(x) = x^2 \cdot \sin x

f=x2f = x^2g=sinxg = \sin xf=2xf' = 2xg=cosxg' = \cos x なので——「x2x^2 を微分 + sinx\sin x を微分」:

h(x)=2xsinx+x2cosxh'(x) = 2x \cdot \sin x + x^2 \cdot \cos x

商の微分法則(Quotient Rule)

「分数の変化率」——分子と分母が両方変化するときの求め方です:

[f(x)g(x)]=f(x)g(x)f(x)g(x)[g(x)]2\left[\frac{f(x)}{g(x)}\right]' = \frac{f'(x)g(x) - f(x)g'(x)}{[g(x)]^2}

語呂合わせ: 「前の微分 × 後ろ − 前 × 後ろの微分」を分母の二乗で割る——積の法則とよく似ていますが、符号が「プラス」ではなく「マイナス」になります。

h(x)=x2x+1h(x) = \frac{x^2}{x+1}

f=x2f = x^2g=x+1g = x+1f=2xf' = 2xg=1g' = 1——「分子を微分してから分母をかける、分子をそのままで分母を微分したものを引く」:

h(x)=2x(x+1)x21(x+1)2=2x2+2xx2(x+1)2=x2+2x(x+1)2h'(x) = \frac{2x(x+1) - x^2 \cdot 1}{(x+1)^2} = \frac{2x^2+2x-x^2}{(x+1)^2} = \frac{x^2+2x}{(x+1)^2}

合成関数の微分(Chain Rule・連鎖律)

「外側のコーティングを剥がしてから内側を微分する」——入れ子になった関数の微分は、外と内を順番に処理します。

y=f(g(x))y = f(g(x)) という「入れ子」になった関数の微分:

dydx=dydududx(ただし u=g(x)\frac{dy}{dx} = \frac{dy}{du} \cdot \frac{du}{dx} \quad \text{(ただし } u = g(x) \text{)}

または [f(g(x))]=f(g(x))g(x)[f(g(x))]' = f'(g(x)) \cdot g'(x)

語呂合わせ: 「外の微分(中身はそのまま)× 中の微分」——「外の皮を微分して、中はそのまま残して、最後に中身の微分をかける」

h(x)=(x2+1)5h(x) = (x^2 + 1)^5

外関数 f(u)=u5f(u) = u^5、内関数 g(x)=x2+1g(x) = x^2+1——「u5u^5 の微分は 5u45u^4、中身はそのまま、あとで x2+1x^2+1 の微分をかける」:

h(x)=5(x2+1)42x=10x(x2+1)4h'(x) = 5(x^2+1)^4 \cdot 2x = 10x(x^2+1)^4

デモ:積の微分を視覚化

f(x)=sinxf(x) = \sin x(赤)と g(x)=0.3x+0.5g(x) = 0.3x + 0.5(緑)の積 h(x)=f(x)g(x)h(x) = f(x)g(x)(青)、そしてその導関数(黄)を描画します。マウスでどの点でも接線の傾きを確認できます。

h(x) = sinx · (0.3x+0.5) とその微分。積の法則を確認。
function loop() {
ctx.clearRect(0, 0, W, H);
var scale=55;
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.12)';
  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.25)';
  ctx.font='10px monospace';
  ctx.textAlign='center';
  for(var i=-5;i<=5;i++){
    if(i===0)continue;
    ctx.fillText(i,toSx(i),oy+14);
  }
}

function plotCurve(fn,color,lw,dash){
  ctx.strokeStyle=color;ctx.lineWidth=lw||1.5;
  if(dash)ctx.setLineDash(dash);else ctx.setLineDash([]);
  ctx.beginPath();
  var first=true;
  for(var xi=-W/2;xi<=W/2;xi+=1){
    var x=xi/scale;
    var y=fn(x);
    if(!isFinite(y)||Math.abs(y)>H/scale+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.setLineDash([]);
}

var f=function(x){return Math.sin(x);};
var g=function(x){return 0.3*x+0.5;};
var h=function(x){return f(x)*g(x);};
// h'(x) = cos(x)*(0.3x+0.5) + sin(x)*0.3
var hd=function(x){return Math.cos(x)*(0.3*x+0.5)+Math.sin(x)*0.3;};

ctx.fillStyle='#0d1117';
ctx.fillRect(0,0,W,H);
drawAxes();

plotCurve(f,'rgba(239,83,80,0.5)',1.5);
plotCurve(g,'rgba(129,199,132,0.5)',1.5);
plotCurve(h,'#4fc3f7',2.5);
plotCurve(hd,'rgba(255,202,40,0.85)',2,[5,3]);

// Mouse interaction
var x0=(mx-ox)/scale;
x0=Math.max(-4.5,Math.min(4.5,x0));
var y0=h(x0);
var slope=hd(x0);

var ext=1.8;
ctx.strokeStyle='rgba(255,255,255,0.6)';
ctx.lineWidth=1;
ctx.setLineDash([4,4]);
ctx.beginPath();
ctx.moveTo(toSx(x0-ext),toSy(y0+slope*(-ext)));
ctx.lineTo(toSx(x0+ext),toSy(y0+slope*ext));
ctx.stroke();
ctx.setLineDash([]);

ctx.beginPath();ctx.arc(toSx(x0),toSy(y0),5,0,Math.PI*2);
ctx.fillStyle='#fff';ctx.fill();

// Info
ctx.fillStyle='rgba(0,0,0,0.65)';
ctx.fillRect(8,8,265,90);
ctx.font='12px monospace';ctx.textAlign='left';
ctx.fillStyle='#ef5350';
ctx.fillText('f(x) = sin x',14,26);
ctx.fillStyle='#81c784';
ctx.fillText('g(x) = 0.3x+0.5',14,44);
ctx.fillStyle='#4fc3f7';
ctx.fillText('h(x) = f·g = '+y0.toFixed(3),14,62);
ctx.fillStyle='#ffca28';
ctx.fillText("h'(x) = "+slope.toFixed(3)+' (x='+x0.toFixed(2)+')',14,80);

// Legend bottom
ctx.font='11px sans-serif';ctx.textAlign='right';
ctx.fillStyle='#4fc3f7'; ctx.fillText('── h(x)=f·g',W-10,H-28);
ctx.fillStyle='rgba(255,202,40,0.85)'; ctx.fillText("- - h'(x)",W-10,H-10);

requestAnimationFrame(loop);
}
loop();

連鎖律の詳細例

二重合成

sin\sin の中に x2x^2 が入っている」——外から順番に微分します:

y=sin(x2)y = \sin(x^2)

u=x2u = x^2 と置くと y=sinuy = \sin u——「外の sin\sin を微分して中身はそのまま、あとで中身 x2x^2 の微分をかける」:

dydx=cos(u)2x=2xcos(x2)\frac{dy}{dx} = \cos(u) \cdot 2x = 2x\cos(x^2)

三重合成

「さらに外側に ()3()^3 がある」——連鎖律を 2 回続けて適用します:

y=(sin(x2))3y = \left(\sin(x^2)\right)^3

v=sin(x2)v = \sin(x^2)y=v3y = v^3 として——「v3v^3 を微分、次に sin(x2)\sin(x^2) を微分、最後に x2x^2 を微分」:

dydx=3v2dvdx=3sin2(x2)2xcos(x2)=6xsin2(x2)cos(x2)\frac{dy}{dx} = 3v^2 \cdot \frac{dv}{dx} = 3\sin^2(x^2) \cdot 2x\cos(x^2) = 6x\sin^2(x^2)\cos(x^2)

積の法則の証明

「なぜ fg+fgf'g + fg' になるのか」——差分商を用いて証明できます:

[f(x+h)g(x+h)f(x)g(x)]/h[f(x+h)g(x+h) - f(x)g(x)] / h

分子に f(x+h)g(x)f(x+h)g(x)=0f(x+h)g(x) - f(x+h)g(x) = 0 を加えて——「ゼロを加えても式は変わらない」ので、うまく変形できます:

=f(x+h)f(x)hg(x+h)+f(x+h)g(x+h)g(x)h= \frac{f(x+h)-f(x)}{h} \cdot g(x+h) + f(x+h) \cdot \frac{g(x+h)-g(x)}{h}

h0h \to 0f(x+h)f(x)f(x+h) \to f(x)(連続性より)、各差分商は f(x)f'(x)g(x)g'(x) に収束。よって:

=f(x)g(x)+f(x)g(x)= f'(x)g(x) + f(x)g'(x)

よく使う組み合わせ

「合成関数の微分のよく出るパターン」——これを覚えておくと計算がスムーズになります:

関数微分
(ax+b)n(ax+b)^nna(ax+b)n1na(ax+b)^{n-1}
sin(ax)\sin(ax)acos(ax)a\cos(ax)
cos(ax)\cos(ax)asin(ax)-a\sin(ax)
eaxe^{ax}aeaxae^{ax}
ln(ax)\ln(ax)1/x1/x

まとめ

(fg)=fg+fg,(fg)=fgfgg2,[f(g(x))]=f(g(x))g(x)(fg)' = f'g + fg', \quad \left(\frac{f}{g}\right)' = \frac{f'g - fg'}{g^2}, \quad [f(g(x))]' = f'(g(x)) \cdot g'(x)
  • 積:「左を微分して右をそのまま」プラス「左をそのままで右を微分」
  • 商:分子は積と同じ符号の引き算、分母は元の分母の二乗
  • 連鎖律:「外側から順番に微分して掛け合わせる」

この 3 つのルールを組み合わせれば、ほとんどの初等関数を微分できます。次回は三角関数の微分——sinx\sin x の導関数が cosx\cos x になる美しい事実を確認します。