前回のあらすじ
東京大学2023数学[3]の問題に取り掛かることにした。2次曲線(円錐曲線)の交点について調べる問題であるが、その図形をブラウザ上(hatena blog)に描こうというのが、最初の目的である。今回使うのはsvgというマークアップ言語で、htmlとの親和性の高い言語である。命令の解釈はsafariなどの通常のブラウザに組み込まれたエンジンでやってくれる。コンパイラやインタープリターの代わりになるのが、ブラウザである、という理解でだいたい合っていると思う。
まずはsvgで実現するまえに、gnuplotを用いてどんな感じの図形になるか、おおよそのスケッチを見てみよう。
gnuplotで描く問題設定のグラフ
2つの円錐曲線、つまり円Cと放物線Bが登場する。
\begin{align} \text{C:} &\quad x^2+(y-a)^2 = 1 \label{eq1} \\ \text{B:} &\quad y= x^2 \label{eq2} \end{align} ただし$a$は実数。
gnuplotで$a=1/2$の場合の図を描いてみた。
gnuplotは、作図した結果をpngファイルに書き出してくれるので、それを実行したのが上の図である。
これまであまり気にしていなかったが、pngの代わりにsvgに出力することも可能ということにさきほど気がつき、さっそくやってみることにした。中身をのぞいてみると、しかし、かなり複雑である.....。おそらくグリッドや色つきの関係の設定に費やされているのではないかと推測しているが、まだ見当もつかない。ちなみに、png形式の画像ファイルに落とした時のサイズは26KBだが、svg形式だと65KBに膨れ上がっている。いかに複雑な構造になっているかがわかるだろう。
とはいえ、我々が目指すのは円と放物線と座標軸を表す直線2本だけだから、オブジェクトとしては4つですむはずだ。できる限り簡単な表現を目指せば、gnuplotが打ち出したような複雑な構造にはならないはずだ(と信じたい....)。
問題の吟味
せっかくグラフが出たので、ここで問題の内容についても簡単に吟味しておこう。問題文を再掲する。
ここでは(1)についてのみ考察しておこう。要は、円Cが放物線Bの「上側」にすっぽり収まるためには、$a$の値をどのように決めればいいですか?という質問である。$a$を動かすと円Cの中心がy軸に沿って上下するだけであるから、質問の本意は、CとBの交点が0になる場合を見つけてください、ということになるが、注意すべき点が一つだけある。それは「CがBの上に来なくてはならない」という点である。問題文で$y\ge x^2$という不等式で与えられた条件である。
まずは交点が存在する場合を考えよう(これは問題が要求していない状況である)。上のgnuplotの図の例は、交点が存在している場合になっている。交点は2つの方程式のもつ対称性により必ず二個のペア(対)となる。交点が発生する場合、円周の一部が放物線の下側に入り込んでしまうから題意は満たされなくなるのである。
ただ、例外として放物線Bと円Cが接するような場合がある。図を見ると、なんとなくその状況がわかる感じがするので「シミュレーション」をやってみよう。
シミュレーションと数値計算の違い
少し前までシミュレーションと数値計算の違いがよくわからず、「シミュレーションといっても数値計算するわけだから、数値計算と呼べばいいんじゃないか?」と思っていたが、今考えるとシミュレーションはシミュレーションとしてだけの意味合いをもっていることに同意できる。
極端なことをいえば、シミュレーションは数値計算しなくても実行できる。有名な「手動式シミュレーション」としては、太平洋戦争の開戦前に総理大臣直轄の総力戦研究所が行なった「机上演習」があげられる(現実的なデータをもとに、打てるべき政策を立案し、その成果を評定する形での、コンピュターを用いないシミュレーション)。ちなみに、このときの結論は「日本必敗」だったという。
もちろん、現代社会においてシミュレーションといえば「数値シミュレーション」を意味し、数値計算の中に含まれるのは確かである。しかし、数値計算はシミュレーションだけにとどまらず、様々な数値的な計算を含む、いわば「より大きな概念」である。例えば、棒振り子の力学を分析しようと思ったら、楕円積分が登場するが、「楕円積分」のままで止めおかずに数値的にその中身を計算すれば、それは「数値計算」となる。あるいは、水素原子のd波の広がりを可視化したいと思ったら、球面調和関数を数値的に計算しなくてはならない。こういうのが、「数値計算」である。
一方で、様々な値がとれるパラメータが存在し、微分方程式の解がこのパラメータによって分類されているとする。どのパラメータの値を選んでも「解」は「解」である。しかし、その解がいったい具体的にはどんな振る舞いをするのかは、パラメータの値をいくつか選んで具体的に計算してやらないと、様子を知ることが難しいとする。このときに、パラメータを振って数値計算を繰り返す作業が発生するが、これが「シミュレーション」に近い作業である。
この問題では、円Cのy軸上における位置がパラメータ$a$によって与えられているので、様々な値に振ってみて、どんな様子になるのかを観察し、そこから答えに導くヒントを見つけようとする試みが「シミュレーション」とよべるものであろう。
まずは極端な状況から始めるのがいいだろう。$a$がとても大きい正の値であるならば、きっとCはBに含まれるであろう。なぜなら、放物線の「口」は$y\rightarrow\infty$でどんどん開くからである。とりあえず$a=10$程度でまずは試してみる。
予想通りである!円の半径が一定値の1に固定されているので、上に円Cを置けば置くほど、題意を満たしやすい状況となるのだ。この「シミュレーション」により、まずは答えの一つがわかった。それは$a=10$である(笑)。グラフを見た感じからすると、もう少し$a$を小さくしても題意は満足できそうな感じがする。一方で、$a>10$の場合は、明らかに題意を満たすことがわかる。つまり、$a$を少しずつ減少させていけば、いずれは放物線と円が接する状況にたどり着き、さらに$a$を減少させると両者が交わる状況となって、題意が満たされなくなるだろう、ということが推測できる。すくなくとも$a=1/2$の時に交点が発生していることは、上の図で確かめてある。したがって、この「下限値」というのは1/2よりは大きくないといけないだろう。
ということで、次は$a=1$を試してみよう。 見た感じ、$x=0$でCとBが接しているように見える。実は、CとBが接するときは接点1点のみではないかと予想していたのだが、他にもペアの交点が2つ存在している。そのため、この場合は3つの交点が存在している。
$a=1$の場合に円Cと放物線Bが原点で接するのは、簡単な幾何学的な考察からすぐにわかる。円Cの半径が1であるからである。中心の位置が$y=1$にあれば、円周上の点(0,0)は原点に他ならず、放物線$y=x^2$の頂点に一致する。
交点が3つあるこの場合は、ペアの交点2つのところでCがBから下にはみ出ているため題意を満たさないことがわかる。したがって、$a$の下限は1より上にあるはずだ。
問題を解くという観点から、しばし離れてみると、交点が4つの場合があるかどうかが気になる(図を見るとありそうな気がする)。そこで、$a=1$から少しだけ円を上の方にずらしてみる。例えば$a=1.1$にしてみたらどうだろうか? 予想通り、交点が4つある状況が見つかった。これは交点のペアが2つある場合に相当することも確認できる。実は、この性質は(2)の問題を解く上で重要になってくる。
交点が4つある状況はずっと続く訳ではない。少なくとも、$a\rightarrow\infty$で交点は0になってしまうわけだから、$a$の増加に伴って次第に交点の数は減ってくるはずである。$4\rightarrow 3\rightarrow 2\rightarrow 1\rightarrow 0$と一つずつ交点の数が減ってくるのか、それとも$4\rightarrow 2 \rightarrow 0$と、2つずつ減ってくるのか? 予想としては、円の直径は2で固定されているので、上に行くほど放物線の「口」が開き、上のペアの方から交点でなくなってくるはずである。とすれば、後者の予想のように、交点は4つから2つ、2つから0へと、2ずつ減ってくると思われる。そして、2から0に減る「瞬間」こそが、問題(1)で問われている状況であるだろうことが推測できる。
円の直径は2であるから、放物線の「口の広さ」が2を超える場所では交点は発生しない。放物線の口の広さというのは、放物線を水平線($y=b$)で切り落としたときの「断面」の大きさである。この状況を満たす水平線が$y=1$であることは簡単にわかる。つまり、放物線Bと円Cの交点は$y>1$では発生しない。ということは、円の最下部$(0,y_\text{min})$が$y_\text{min}>1$を満たすとき、Cは完全にBの上に位置することは明らかである。この状況は$a=2$である。
したがって、題意を満たす$a$の下限値は$a=1$と$a=2$の間にあることが推測できる。
今度は、円Cが下側に「落ちる」場合を考えてみよう。$a=1$の時、円の最下点が原点(つまり放物線の頂点)と一致したので、$a=1$をわずかに下回ると、交点は3つから2つに減ることがわかる。実際、$a=1/2$の場合は(シミュレーションして)確かめてある。さらに$a$の値を減少させると、ついには円の最上点が原点に一致する状況となるだろう。幾何学的に考えると、その状況は$a=-1$であることはすぐにわかる。
$a<-1$の場合に交点が0となることも容易に想像できる。この場合は、円Cと放物線Bが交点を持たないが、放物線の方が円より上にくる(この状況をB>Cと表すことにする)ので、題意を満たしていない。後で、BとCの連立方程式を考えるが、解がない場合だとしても、B>Cという状況は題意を満たしていないことに注意をして分析する必要がある。
連立方程式
結局、この問題(1)は放物線Bと円Cの交点の数やその性質について理解すれば解ける問題であることがわかってきた。 「じゃあ、式(\ref{eq1})と式(\ref{eq2})の連立方程式を解いて、判別式を調べれば一発の楽勝問題じゃないか!」という声が聞こえてきそうである。
しかし、単純に連立させると、4次方程式になってしまい、(普通の)高校数学では手が出しにくい世界へ行ってしまうのである。すなわち、式(\ref{eq1})に式(\ref{eq2})を代入すると、 \begin{equation} x^2+(x^2-a)^2 = 1 \quad \rightarrow \quad x^4+(1-2a)x^2 + a^2 -1=0 \end{equation} となってしまうのだ。 とはいえ4次方程式ならば、微分積分の知識さえあれば高校生でもなんとか分析できる。
ということで、とりあえず上の右側の式の左辺を \begin{equation} f(x)\equiv x^4+(1-2a)x^2 + a^2 -1 \end{equation} と表すことにする。
幸運にも、この形はy軸に対する対称性をもっている($f(x)=f(-x)$が成立するということ)。したがって、極値の振る舞いがxの正負の領域で同じとなる。したがって、極値の片方だけ調べれば十分である。また、この4次関数の極値は最大で3つに限られ、一つが極大($x=0$)、残り2つが対称な位置にある極小値である。ということで、実質、$x>0$の領域にある極小値の振る舞いだけを調べるだけで済む。
$f(x)$を一回微分して、極値の位置を求める。 \begin{equation} f'(x)=4x^3+2(1-2a)x = 2x(2x^2+1-2a) \end{equation} この式の2次式部分の根のうち、正の値をもつものがターゲットである。すなわち \begin{equation} x_+=\sqrt{\frac{2a-1}{2}} \end{equation} である。
平方根の中が正でないと$x_+$は実数となり得ないが、虚数になるならそれはそれでむしろいいのである。その場合は極小値が発生しないという意味となるから、$x=0$で発生する極大値$f(0)$の正負だけを気にすればよいのだ。$f(0)>0$が常に成り立つとき、CとBは交点を持たないから題意に沿うのである。(もちろん$f(0)=0$の場合も含めなければならない。CとBが接する時である。)まずはこのケースについて片付けておこう。
つまり$a<1/2$のときは、$f(0)>0$さえ満たされていれば題意は満たされる。$f(0)= a^2-1$なので、 \begin{equation} a^2-1 > 0 \rightarrow a>1 \quad \text{or} \quad a<-1 \label{ineq1} \end{equation} となる。$a<1/2$の前提と上の式(\ref{ineq1})とを合わせると、 \begin{equation} a<-1 \end{equation} となる。
しかし、この条件は求めるものではない。シミュレーションのところで見たように、円Cと放物線Bは(この場合)交点はもたないが、Cの位置がBの下側(C<B)になってしまうため、題意を満たさないのである。
ということで、$a>1/2$の場合、つまり$y=f(x)$がきちんと2つの極小値と1つの極大値(原点)を持つ場合を考える必要があるのである。
「グラフを描いたついで」にやってみた「簡単な」分析のつもりであったが、議論が長くなりすぎてしまった感じがする。この辺でちょっといったん休憩をいれようと思う(次回へ続く)。