反比例のグラフと双曲線
積が一定に保たれる y = k/x の関係と、なめらかに枝分かれする双曲線の形
- 1
- 反比例 y = k/x は、x が2倍・3倍になると y が 1/2倍・1/3倍になる関係で、常に積 xy = k(一定)が成り立つ
- 2
- 反比例のグラフは「双曲線」と呼ばれる2本のなめらかな曲線になり、x = 0 と y = 0 の直線(座標軸)には決して触れない(漸近線)
- 3
- サーバーの負荷分散のように「資源(x)を増やすほど、1つあたりの負担(y)が減る」関係は反比例のモデルで説明できる
なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値
なぜ生まれたのか?
反比例 y = k/x は、x が2倍・3倍になると y が 1/2倍・1/3倍になる関係で、常に積 xy = k(一定)が成り立つ
身につく武器・思考力
反比例のグラフは「双曲線」と呼ばれる2本のなめらかな曲線になり、x = 0 と y = 0 の直線(座標軸)には決して触れない(漸近線)
実社会・ITでの活躍現場
- •負荷分散(ロードバランシング)における反比例モデル
- •ITシステム・アルゴリズム実装における論理設計
- •データ分析やシミュレーションにおける数理モデリング
Layer 1 — 直感・シミュレーター
比例定数 k をスライダーで変えると、双曲線の形(曲線が座標軸からどれだけ離れているか)がリアルタイムに変化する。曲線上の点をドラッグすると、x座標とy座標が表示され、x×y が常に k と等しいまま保たれることを確認できる。
↑ 比例定数 k をスライダーで変えると双曲線の広がり方が変化する。曲線上の赤い点をドラッグしても、 x座標とy座標の積 xy は常に k と等しいまま保たれることが確認できる。
y = 12/x のグラフ上で、x = 3 のときの y の値はいくつか?
Layer 2 — 定義・受験・証明
定義
2つの変数 の間に、 の値が2倍、3倍、…になると の値が 倍、 倍、…になる関係があるとき、 は に反比例するといい、次の式で表される( は0でない定数で「比例定数」と呼ぶ)。
この式は と変形でき、 と の積が常に一定の値 に保たれることを意味する。このグラフは「双曲線」と呼ばれる、原点に関して点対称な2本のなめらかな曲線になる。
公式・数理モデル
証明・導出
グラフが座標軸に触れない理由(漸近線の考察): ( とする)において、 を限りなく大きくしていくと、 は限りなく に近づくが、 がどれだけ大きくても が厳密に になることはない( である限り)。 したがって、グラフは 軸( の直線)に限りなく近づきながら、決して触れることがない。同様に を に近づけていくと は限りなく大きく(または 側では限りなく小さく)なっていくが、 自体は定義域に含まれない(0で割ることはできないため)。 このように、曲線が限りなく近づくが決して交わらない直線を「漸近線」と呼び、反比例のグラフは 軸と 軸の両方を漸近線として持つ。 また、 を に、 を に同時に置き換えても は変わらないため、グラフは原点に関して点対称であり、 のときは第1象限と第3象限に、 のときは第2象限と第4象限に曲線が現れる。
押さえておきたいポイント
- 比例()のグラフが原点を通る直線になるのに対し、反比例()のグラフは原点を通らず座標軸に漸近する双曲線になる
- 反比例のグラフ上のどの点をとっても、その点の 座標と 座標の積は必ず比例定数 に等しい
- の絶対値が大きいほど、双曲線は座標軸から離れた位置に広がる
- 反比例は「一定の仕事量・資源を、参加する人数や台数で分け合う」関係(例: 1人あたりの作業時間 = 全体の仕事量 ÷ 人数)のモデル化によく使われる
本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。
Layer 3 — 工学応用・現場実装
負荷分散(ロードバランシング)における反比例モデル
サーバーの台数を増やすほど1台あたりが処理すべきリクエスト数が減る、という負荷分散の関係は、全体の処理量を一定 k とみなした反比例 y = k/x のモデルで表現できる。台数(x)と1台あたり負荷(y)の積が常に一定であるという考え方は、キャパシティプランニングの基本になる。
1// サーバー台数と1台あたりの負荷の反比例モデル2function loadPerServer(totalRequestsPerSecond: number, serverCount: number): number {3 if (serverCount <= 0) throw new Error("サーバー台数は1以上である必要があります");45 // y = k / x (k = 全体のリクエスト量, x = サーバー台数, y = 1台あたりの負荷)6 return totalRequestsPerSecond / serverCount;7}89const totalLoad = 1200; // 全体で1秒あたり1200リクエスト (k = 1200)1011for (const servers of [1, 2, 3, 4, 6, 12]) {12 const load = loadPerServer(totalLoad, servers);13 console.log(`サーバー${servers}台 → 1台あたり ${load.toFixed(1)} req/秒`);14 // 台数が2倍になると1台あたりの負荷が半分になる、反比例の関係が確認できる15}1617// 逆に「1台あたりの負荷をL以下に抑えるには何台必要か」を求める(xについて解く)18function requiredServers(totalRequestsPerSecond: number, maxLoadPerServer: number): number {19 // x = k / y20 return Math.ceil(totalRequestsPerSecond / maxLoadPerServer);21}2223console.log(requiredServers(1200, 50)); // 50req/秒以下に抑えるには24台必要
次に学ぶならコレ!おすすめトピック
この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元