最大・最小値の求め方
最大値・最小値定理
「決まった範囲の中で、どこで一番高くなり、どこで一番低くなるか」——たとえば「気温が最高になるのは何時か」「材料費を最小にする容器の寸法は何か」という問題が最適化の典型例です。
最大値・最小値定理(Extreme Value Theorem):閉区間 上で連続な関数 は、必ずその区間内で最大値と最小値を取る——「範囲が限られていれば、必ず最高点と最低点がある」という保証です。
閉区間法(Closed Interval Method)
「臨界点(傾きがゼロの点)と両端の値を全部調べて比べる」——これが閉区間での最大・最小値を求める基本手順です:
上で の最大・最小を求める手順:
- となる を区間内で全て求める(臨界点)——「傾きがゼロ = 山頂か谷底の候補」
- 端点 、 も計算する——「範囲の両端も候補になる」
- 全ての値を比較して最大・最小を決定——「一番大きいのが最大値、一番小さいのが最小値」
例
を で最大・最小化する。
区間 内の臨界点は のみ( は端点)——「 は区間の左端」です。
| (端点) | |
| (臨界点) | |
| (端点) |
最大値 ( または )、最小値 ()——「最大値が 2 か所で達成されることもある」という点に注意です。
デモ:円に内接する長方形の面積最大化
「円の中に収まる長方形で、面積を最大にするには?」——直感的には「横長でも縦長でもなく、正方形のとき」です。計算で確かめましょう。
半径 の円に内接する長方形を考えます。一頂点の 座標を とすると、縦の半分は 、面積は:
微分すると:
、(正方形のとき最大!)——「縦と横が等しい正方形が最大面積」という答えが数学的に証明されます。
マウスを動かして長方形を変え、面積の変化を観察してください。
function loop() {
ctx.clearRect(0, 0, W, H);
var cx=W/2, cy=H/2+10;
var r=130; // pixel radius = 2 units, so scale=65
var scale=65;
function toSx(x){return cx+x*scale;}
function toSy(y){return cy-y*scale;}
ctx.fillStyle='#0d1117';
ctx.fillRect(0,0,W,H);
// Draw circle
ctx.beginPath();
ctx.arc(cx,cy,r,0,Math.PI*2);
ctx.strokeStyle='rgba(79,195,247,0.5)';
ctx.lineWidth=2;
ctx.stroke();
// Axes
ctx.strokeStyle='rgba(255,255,255,0.12)';
ctx.lineWidth=1;
ctx.beginPath();ctx.moveTo(0,cy);ctx.lineTo(W,cy);ctx.stroke();
ctx.beginPath();ctx.moveTo(cx,0);ctx.lineTo(cx,H);ctx.stroke();
// mouse x in [-2, 2] range
var xm=(mx-cx)/scale;
xm=Math.max(0.05,Math.min(1.95,xm));
var ym=Math.sqrt(4-xm*xm);
// Area in unit space
var A=4*xm*ym;
var Amax=8; // at x=sqrt(2), A=4*sqrt(2)*sqrt(2)=8
// Draw rectangle
var rx=toSx(-xm), ry=toSy(ym);
var rw=toSx(xm)-toSx(-xm), rh=toSy(-ym)-toSy(ym);
var frac=A/Amax;
var rr=Math.round(239+(1-frac)*16);
var rg=Math.round(83+frac*116);
var rb=Math.round(80);
ctx.fillStyle='rgba('+rr+','+rg+','+rb+',0.25)';
ctx.fillRect(rx,ry,rw,rh);
ctx.strokeStyle='rgba('+rr+','+rg+','+rb+',0.9)';
ctx.lineWidth=2;
ctx.strokeRect(rx,ry,rw,rh);
// Draw corner points
var corners=[
[xm,ym],[xm,-ym],[-xm,-ym],[-xm,ym]
];
for(var i=0;i<corners.length;i++){
ctx.beginPath();
ctx.arc(toSx(corners[i][0]),toSy(corners[i][1]),4,0,Math.PI*2);
ctx.fillStyle='#ffca28';ctx.fill();
}
// Show optimal rectangle outline
var opt=Math.sqrt(2);
var opty=Math.sqrt(2);
ctx.strokeStyle='rgba(129,199,132,0.4)';
ctx.lineWidth=1.5;
ctx.setLineDash([5,5]);
ctx.strokeRect(toSx(-opt),toSy(opty),toSx(opt)-toSx(-opt),toSy(-opty)-toSy(opty));
ctx.setLineDash([]);
// Area graph (mini bar)
var barX=W-110, barY=H-30, barW=90;
ctx.fillStyle='rgba(0,0,0,0.5)';
ctx.fillRect(barX-5,barY-50,barW+10,60);
ctx.fillStyle='rgba('+rr+','+rg+','+rb+',0.8)';
ctx.fillRect(barX,barY-frac*40,barW,frac*40);
ctx.strokeStyle='rgba(255,255,255,0.3)';
ctx.lineWidth=1;
ctx.strokeRect(barX,barY-40,barW,40);
ctx.fillStyle='rgba(255,255,255,0.7)';
ctx.font='10px monospace';ctx.textAlign='center';
ctx.fillText('面積',barX+barW/2,barY+10);
// Info panel
ctx.fillStyle='rgba(0,0,0,0.7)';
ctx.fillRect(8,8,250,92);
ctx.font='13px monospace';ctx.textAlign='left';
ctx.fillStyle='#4fc3f7';
ctx.fillText('x = '+xm.toFixed(3),14,28);
ctx.fillText('y = '+ym.toFixed(3),14,46);
ctx.fillStyle='rgba('+rr+','+rg+','+rb+',1)';
ctx.fillText('面積 A = '+A.toFixed(3),14,64);
ctx.fillStyle='#81c784';
ctx.fillText('最大面積 = 8.000 (x=√2)',14,82);
// Arrow to max
if(Math.abs(xm-Math.sqrt(2))<0.15){
ctx.fillStyle='#81c784';
ctx.font='bold 13px sans-serif';ctx.textAlign='center';
ctx.fillText('★ 最大!',cx,cy-r-20);
}
// Labels
ctx.fillStyle='rgba(255,255,255,0.6)';
ctx.font='12px sans-serif';ctx.textAlign='right';
ctx.fillText('最適 (x=√2, A=8)',W-10,H-10);
requestAnimationFrame(loop);
}
loop(); なぜ正方形が最大なのか
「式を変形して最大化を簡単にする」—— の最大化を の最大化で行うと( なので同値):
と置くと 。
このとき 。 なので確かに正方形!
AM-GM 不等式でも証明できます——「2 つの数の積は、その相加平均の二乗以下」という不等式を使います:
等号は 、すなわち のとき成立——「等しいとき(正方形のとき)に面積が最大」という美しい結果です。
実用的な最適化問題のパターン
箱の体積最大化
「正方形の薄板から四隅を切り取って箱を作るとき、体積を最大化する切り取り量を求める」——設計の現場でも出てくる問題です。
最小コスト問題
「タンクや容器の表面積(材料費)を一定体積のもとで最小化する」——「同じ容量なら球形が一番材料を節約できる」という日常に潜む数学です。
費用・利益最大化
「経済学でも微分を使って利益最大化点(限界費用=限界収益)を求めます」——「もう 1 個作ったときの収益増加 = もう 1 個作ったときのコスト増加」が利益最大の条件です。
まとめ
- 閉区間法:臨界点と端点の値を全て比較——「傾きがゼロの点と両端の全員を集めて比べる」
- 実際の問題:変数を絞り込み、1 変数の関数として定式化——「まず何を変数にするかを決める」
- 多くの最適形状は対称性を持つ(正方形、正三角形など)——「対称性 = 均等 = 最適」というパターンが多い
次回は接線と法線の方程式——微分係数を使って具体的な直線の方程式を求めます。