レンズの問題を中学生に聞かれたのですが、すぐに答えらませんでした。
そこでプログラムでグラフを描きながら考察したことのまとめです。

問題

物体とスクリーンの間に凸レンズを置いて、スクリーンに像を写すことを考えます。

ここで、レンズを物体側からスクリーン側に移動させていきます。このとき、像が焦点を結ぶレンズの位置は何か所あるでしょうか?

という問題です。ここでレンズの焦点距離は10cm、物体とスクリーン間の距離は60cmとします(説明しやすいように、実際の問題から少し改変しています)。

レンズの位置をX、焦点が合う位置をYとします。

このXとYの関係をグラフ化すると以下のようになります(レンズの公式は使わずに、直線の交わる点としてYを求めました)。

面白いことに、Xが20までは、Yは減少しますが、Xが20を超えると増加するという関係になります。
X=20というのは、レンズの焦点距離の2倍のときです。この時にスクリーンまでの距離が最小になるのです。

見方を変えて、スクリーンが60cm の位置に固定されているとすれば(オレンジの横線)、関数がオレンジの横線と交わるのが2か所なので、
この2か所で焦点が合うといえます。

プログラム

Jupyter notebook で作成しました。

まず、計算や描画に使用する関数を作ります。

次に二つの直線の交点を求める関数を作ります。

こちらがメイン。

物体の高さ(light_H)、レンズの位置(lens_pos)、焦点距離(lens_F)を与えると、
スクリーンの位置を出力し、その時の位置関係を図示するプログラムです。

これを使って、XとYの関係をグラフにするのが次のコード。

以下、レンズの位置を変えたショット。

レンズの焦点が10cm なので、レンズの位置が10cmのときは、焦点の合う距離は無限遠方。下の図は、そこからレンズの位置を右に1cm動かしたもの。

レンズを右に動かすと焦点の合うスクリーンの位置は近づいてくる。レンズを12.7cmの地点まで動かすと、スクリーンの位置はだいたい60cmとなる。このとき、像の大きさは本物よりも大きい。

レンズの位置を焦点距離の2倍の位置まで(20cm)動かしたときが、最もスクリーンの位置が近くなり40cm。像の大きさは本物の大きさと同じになる。

さらにレンズの位置を右に動かしていくと、焦点の合うスクリーンの位置は右に離れていく。

レンズの位置が47cmまで動くと、スクリーンの位置は60cmくらいとなる。この時の像は本物よりもだいぶ小さい。

つまり、問題の答えは、「2か所」ということになります。

曲線の式

YとXの関係式を求めます。

物体からレンズまでの距離をa、レンズからスクリーンまでの距離をb とすると以下の公式がなりたちます。

[math]
\frac{1}{a} + \frac{1}{b} = \frac{1}{F}
[/math]

a=X, b=Y-X として、Y=の形に整えると以下の式が得られます。

[math]
Y = \frac{-X^2}{F-X}
[/math]

ではグラフを描きましょう。

先ほどと同じグラフが得られました。