逆関数と合成関数
y = x を鏡として入出力を入れ替える写像と、暗号化・復号のペア構造
- 1
- 逆関数 f⁻¹ は「f の入力と出力を入れ替えた」関数で、y = f(x) のグラフを直線 y = x に関して線対称に折り返した形になる
- 2
- 逆関数が存在するのは f が全単射(1対1対応)のときだけであり、y = x² のように1つの出力に2つの入力が対応する場合は定義域を制限する必要がある
- 3
- ある処理を逆関数でちょうど打ち消す構造は、暗号の暗号化・復号、座標系の変換と逆変換、ファイル形式のエンコード・デコードなど、工学のあらゆる「可逆処理」の理論的基盤になっている
なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値
なぜ生まれたのか?
逆関数 f⁻¹ は「f の入力と出力を入れ替えた」関数で、y = f(x) のグラフを直線 y = x に関して線対称に折り返した形になる
身につく武器・思考力
逆関数が存在するのは f が全単射(1対1対応)のときだけであり、y = x² のように1つの出力に2つの入力が対応する場合は定義域を制限する必要がある
実社会・ITでの活躍現場
- •可逆変換によるエンコード・デコード処理(暗号化と座標変換)
- •ITシステム・アルゴリズム実装における論理設計
- •データ分析やシミュレーションにおける数理モデリング
Layer 1 — 直感・シミュレーター
ボタンで元の関数 f(1次関数 2x+1 か、定義域を制限した2次関数 x²)を選んでみよう。青い曲線が f、オレンジの曲線がその逆関数 f⁻¹ で、点線の y = x を対称の軸として鏡写しの関係になっていることを確認できる。f のグラフ上の点をドラッグすると、y = x に対して対称な位置に f⁻¹ 側の点が連動して動く。
↑ 青い曲線が 、橙の曲線が です。灰色の点線 を鏡として左右対称になっていることが分かります。青い点をドラッグすると、 座標と 座標が入れ替わった橙の点が連動して動きます。
関数 f(x) = 2x + 1 の逆関数 f⁻¹(x) はどれか?
Layer 2 — 定義・受験・証明
定義
関数 が定義域と値域の間で「1対1対応(全単射)」になっているとき、 の関係を について解き直したものを逆関数と呼び、 と表す。定義から、
が成り立つ。慣習として変数名を に戻すと、 のグラフは のグラフを直線 に関して線対称に折り返した形になる。これは「 が 上の点なら が 上の点になる」という座標の入れ替えから直接導かれる。
公式・数理モデル
証明・導出
の逆関数を求める手順:
1. とおく。 2. について解く: 3. 変数名の役割を入れ替えて を得る。
合成による検算:
一方 (定義域を制限しない場合)では、 のように異なる入力が同じ出力を与えるため全単射ではなく、逆関数は一意に定まらない( の2価関数になってしまう)。そこで定義域を に制限すると初めて全単射になり、 という1価の逆関数が定義できる。
押さえておきたいポイント
- 逆関数が存在する必要十分条件は、元の関数が全単射(単射かつ全射)であること
- のグラフと のグラフは直線 に関して線対称
- 定義域を制限しないと逆関数が定まらない場合がある(例: は に制限して初めて逆関数 を持つ)
- 合成関数 、 は「元に戻す」処理そのものを表す恒等写像
本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。
Layer 3 — 工学応用・現場実装
可逆変換によるエンコード・デコード処理(暗号化と座標変換)
シーザー暗号のような単純な暗号は「文字コードに定数を足す」変換 とその逆関数 (定数を引く)のペアとして実装できる。同様に、ゲームやCGにおけるワールド座標とスクリーン座標の相互変換も、順変換と逆変換という逆関数の関係で設計される。
1// シーザー暗号: 文字コードをずらす順変換 f と、その逆変換 f^-12const SHIFT = 3;3const BASE = 97; // 'a' の文字コード4const ALPHABET_SIZE = 26;56// 暗号化 f(x): 文字コードを SHIFT だけ進める7function encode(char: string): string {8 const code = char.charCodeAt(0) - BASE;9 const shifted = (code + SHIFT + ALPHABET_SIZE) % ALPHABET_SIZE;10 return String.fromCharCode(shifted + BASE);11}1213// 復号 f^-1(x): 暗号化とちょうど逆の操作(SHIFT だけ戻す)14function decode(char: string): string {15 const code = char.charCodeAt(0) - BASE;16 const shifted = (code - SHIFT + ALPHABET_SIZE) % ALPHABET_SIZE;17 return String.fromCharCode(shifted + BASE);18}1920const original = "hello";21const encoded = original.split("").map(encode).join("");22const decoded = encoded.split("").map(decode).join("");2324console.log(`原文: ${original}`); // hello25console.log(`暗号化: ${encoded}`); // khoor26console.log(`復号(逆関数): ${decoded}`); // hello (f^-1(f(x)) = x が成立)
次に学ぶならコレ!おすすめトピック
この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元