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

不定積分

不定積分とは

「速度から位置を求める」——車の速度 f(t)f(t) が分かっているとき、位置 F(t)F(t) を求める操作が積分です。微分が「位置から速度を求める」のとは逆の方向です。

微分の逆演算が積分です。

F(x)=f(x)F'(x) = f(x) となる F(x)F(x)f(x)f(x)原始関数(antiderivative)といいます——「微分したら f(x)f(x) になる関数を見つける」操作です。

原始関数はひとつではなく、F(x)+CF(x) + CCC は任意定数)すべてが原始関数です。これを不定積分(indefinite integral)と書きます:

f(x)dx=F(x)+C\int f(x)\,dx = F(x) + C

なぜ +C+C が必要かというと、定数の微分は 00 なので「どんな定数を足しても微分すれば f(x)f(x) になる」からです——「出発点の高さが分からない」というイメージです。


基本的な不定積分の公式

「べき乗則の逆」——べき乗則が「肩の数を前に降ろして 1 引く」なら、その逆は「1 足して割り算する」です:

xndx=xn+1n+1+C(n1)\int x^n\,dx = \frac{x^{n+1}}{n+1} + C \quad (n \neq -1) 1xdx=lnx+C\int \frac{1}{x}\,dx = \ln|x| + C exdx=ex+C\int e^x\,dx = e^x + C sinxdx=cosx+C\int \sin x\,dx = -\cos x + C cosxdx=sinx+C\int \cos x\,dx = \sin x + C 11+x2dx=arctanx+C\int \frac{1}{1+x^2}\,dx = \arctan x + C

公式の確認(微分して検証)

「積分の答えを微分して元の式に戻れば正解」——確認の手順です:

ddx(xn+1n+1)=(n+1)xnn+1=xn\dfrac{d}{dx}\left(\dfrac{x^{n+1}}{n+1}\right) = \dfrac{(n+1)x^n}{n+1} = x^n

ddx(cosx)=sinx\dfrac{d}{dx}(-\cos x) = \sin x


線形性(和・定数倍)

「微分の和・定数倍の法則がそのまま積分にも使える」——積分記号の外に定数を出せます:

[f(x)+g(x)]dx=f(x)dx+g(x)dx\int [f(x) + g(x)]\,dx = \int f(x)\,dx + \int g(x)\,dx cf(x)dx=cf(x)dx\int c \cdot f(x)\,dx = c \int f(x)\,dx

計算例

「各項を別々に積分して足し合わせる」——多項式は各項に公式を適用するだけです:

(3x22x+5)dx=x3x2+5x+C\int (3x^2 - 2x + 5)\,dx = x^3 - x^2 + 5x + C (x+1x2)dx=23x3/21x+C\int \left(\sqrt{x} + \frac{1}{x^2}\right)dx = \frac{2}{3}x^{3/2} - \frac{1}{x} + C

デモ:積分定数 C の意味——縦方向シフト

f(x)=2xf(x) = 2x の不定積分は F(x)=x2+CF(x) = x^2 + C。マウスを左右に動かすと CC の値が変わり、放物線が縦方向にシフトします。どの曲線も「傾きが 2x2x に等しい」という性質を持ちます。

∫2x dx = x²+C。マウスで C を変化させ、積分定数の意味を確認。
function loop() {
ctx.clearRect(0, 0, W, H);
var scale=50;
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.13)';
  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);
  }
  ctx.textAlign='right';
  for(var j=-3;j<=3;j++){
    if(j===0)continue;
    ctx.fillText(j,ox-6,toSy(j)+4);
  }
}

function plotCurve(fn,color,lw,alpha){
  ctx.strokeStyle=color;ctx.lineWidth=lw||1.5;
  ctx.globalAlpha=alpha||1;
  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.globalAlpha=1;
}

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

// f'(x) = 2x  (the derivative function, shown in green)
plotCurve(function(x){return 2*x;},'#81c784',1.5);

// C value from mouse: map x 0..W to C -3..3
var C=(mx/W)*6-3;

// Family of solutions: draw several with low alpha
var cVals=[-3,-2,-1,0,1,2,3];
for(var ci=0;ci<cVals.length;ci++){
  var cv=cVals[ci];
  var isSelected=Math.abs(cv-C)<0.5;
  plotCurve(
    (function(c){return function(x){return x*x+c;};})(cv),
    isSelected?'#4fc3f7':'rgba(79,195,247,1)',
    isSelected?2.5:1,
    isSelected?1:0.2
  );
}

// Highlight the selected curve
plotCurve(function(x){return x*x+C;},'#4fc3f7',2.5);

// Show tangent on selected curve at x=1.5 to demonstrate slope=2x
var xd=1.5;
var yd=xd*xd+C;
var slopeD=2*xd;
if(Math.abs(yd)<=H/scale){
  var ext=1;
  ctx.strokeStyle='rgba(255,202,40,0.8)';
  ctx.lineWidth=1.5;
  ctx.setLineDash([4,4]);
  ctx.beginPath();
  ctx.moveTo(toSx(xd-ext),toSy(yd+slopeD*(-ext)));
  ctx.lineTo(toSx(xd+ext),toSy(yd+slopeD*ext));
  ctx.stroke();
  ctx.setLineDash([]);
  ctx.beginPath();ctx.arc(toSx(xd),toSy(yd),5,0,Math.PI*2);
  ctx.fillStyle='#ffca28';ctx.fill();
}

// Info panel
ctx.fillStyle='rgba(0,0,0,0.7)';
ctx.fillRect(8,8,260,80);
ctx.font='13px monospace';ctx.textAlign='left';
ctx.fillStyle='#81c784';
ctx.fillText("f(x) = 2x  (被積分関数)",14,28);
ctx.fillStyle='#4fc3f7';
ctx.fillText('F(x) = x² + C',14,46);
ctx.fillStyle='#ffca28';
ctx.fillText('C = '+C.toFixed(2),14,64);

// Vertical arrow showing shift
ctx.strokeStyle='rgba(255,255,255,0.3)';
ctx.lineWidth=1;
var baseY=toSy(0+0); // x=0, C=0 curve
var curY=toSy(0+C);
if(Math.abs(C)>0.1){
  ctx.beginPath();ctx.moveTo(ox+8,baseY);ctx.lineTo(ox+8,curY);ctx.stroke();
  ctx.fillStyle='rgba(255,255,255,0.5)';
  ctx.font='11px monospace';ctx.textAlign='left';
  ctx.fillText('C',ox+12,(baseY+curY)/2);
}

// Legend
ctx.font='12px sans-serif';ctx.textAlign='right';
ctx.fillStyle='#81c784';ctx.fillText("── f'(x) = 2x",W-10,H-28);
ctx.fillStyle='#4fc3f7';ctx.fillText('── F(x) = x²+C',W-10,H-10);

requestAnimationFrame(loop);
}
loop();

積分と逆微分の関係

「積分して微分すると元に戻る、微分して積分すると定数分の違いがある」——:

ddx[f(x)dx]=f(x)\frac{d}{dx}\left[\int f(x)\,dx\right] = f(x) f(x)dx=f(x)+C\int f'(x)\,dx = f(x) + C

連鎖律の逆:基本的な置換

「中が複雑な式のとき、その中身を uu と置き換える」——連鎖律の逆操作です:

2xex2dx\int 2x e^{x^2}\,dx

u=x2u = x^2 と置くと du=2xdxdu = 2x\,dx——「2xdx2x\,dxdudu に置き換わる」:

=eudu=eu+C=ex2+C= \int e^u\,du = e^u + C = e^{x^2} + C

確認:ddxex2=ex22x\dfrac{d}{dx}e^{x^2} = e^{x^2} \cdot 2x


典型的な不定積分のパターン

「よく出るパターンを覚えておくと計算が速くなる」——連鎖律の逆として自然に覚えられます:

不定積分
sin(ax)\sin(ax)1acos(ax)+C-\dfrac{1}{a}\cos(ax)+C
cos(ax)\cos(ax)1asin(ax)+C\dfrac{1}{a}\sin(ax)+C
eaxe^{ax}1aeax+C\dfrac{1}{a}e^{ax}+C
(ax+b)n(ax+b)^n(ax+b)n+1a(n+1)+C\dfrac{(ax+b)^{n+1}}{a(n+1)}+C
f(x)f(x)\dfrac{f'(x)}{f(x)}lnf(x)+C\ln\lvert f(x)\rvert+C

まとめ

xndx=xn+1n+1+C,exdx=ex+C,1xdx=lnx+C\int x^n\,dx = \frac{x^{n+1}}{n+1}+C, \quad \int e^x\,dx = e^x+C, \quad \int \frac{1}{x}\,dx = \ln|x|+C
  • +C+C(積分定数)は省略できない:全ての原始関数を表す——「出発点が決まらないと位置が決まらない」
  • 積分定数の違いはグラフの縦方向シフトに対応する——「どこから出発するかの違い」
  • 微分して f(x)f(x) に戻ることで答えを検証できる——「積分の答えは微分で確認できる」

次回は置換積分・部分積分——より複雑な積分を解くための 2 大テクニックを学びます。