はじめに
高校数学の『図形と方程式』は、教科書にはあまり載っていない難問が入試で出やすい分野である。
特に『軌跡と領域』は、多くの受験生を地獄に叩き落としてきた分野と言えるだろう。
そこで今回は、領域に関する問題を2題扱う。
1題目は『領域の線形変換の問題』で、難易度はそこまで高くない。定石通り、いわゆる順像法を用いて解く。
2題目は『領域の非線形変換の問題』で、いわゆる『閻魔の唇問題』を扱う。この問題は逆像法を用いて解くのが定石だが、ここでは順像法を使った解法もあわせて紹介する。
なお、領域の図示にはPythonのプログラムを用いた。
以下はそのイメージ画像である。
(0) 変換前
(1) 『領域の線形変換の問題』
(2) 『領域の非線形変換の問題』
領域問題の考え方
領域問題に共通する考え方は、与えられた入力の領域を、対応する別の領域(出力の領域)に移すということである。
例えば、
「$-1<x<2$という入力変数$x$の領域において、関数$f(x)=x^2$のとりうる値の領域を求めよ。」
という1変数の問題を、2変数(2次元空間の入力)に拡張したものが、今回扱う問題だと考えればよい。
(これは、関数という概念を一般化した「写像」という考え方である。)
それを踏まえて、2題の問題を見ていく。
問題
前提:実数$s,t$は、$-1<s<1,\ -1<t<1$の範囲を自由に動くとする。
このとき、(1)、(2)それぞれの場合について、$x,y$の取りうる領域を図示せよ。
ただし、いずれの場合も$x=s+t$とする。
(1) $y=2s-3t$を満たす場合
(2) $y=st$を満たす場合
前提(入力変数)の図示
前提を満たす領域(点群)のイメージを以下に示す。
このように、領域は無数の点の集合とみなすことができる。
$x$を$z$軸方向に取って図示すると、以下のような等高線図となる。
解法
(1) 『領域の線形変換の問題』
\begin{cases}
x=s+t\\
y=2s-3t
\end{cases}
は、幸いにも以下のように$s,t$を$x,y$の簡単な式で表すことができる。
\begin{cases}
s=\frac{3}{5}x+\frac{1}{5}y\\
t=\frac{2}{5}x-\frac{1}{5}y
\end{cases}
$-1<s<1,\ -1<t<1$であることから、
\begin{cases}
-1<\frac{3}{5}x+\frac{1}{5}y<1\\
-1<\frac{2}{5}x-\frac{1}{5}y<1
\end{cases}
が成立する。したがって、
\begin{cases}
-3x-5<y<-3x+5\\
2x-5<y<2x+5
\end{cases}
となる。これは、以下のような平行四辺形に囲まれた領域である(線形変換)。
(2) 『領域の非線形変換の問題』
(2)-1 幾何学的性質を利用した解法(順像法)
\begin{cases}
x=s+t\\
y=st
\end{cases}
より、$y=s(x-s)$と変形できる。
y=sx-s^2
これは、$s$を$s_0$に固定すると、$xy$平面上の直線の方程式と考えることができる。
\frac{1}{4}x^2-(s_0 x-s_0^2)=\left(\frac{1}{2}x-s_0\right)^2
であることから、この直線$y=s_0x-s_0^2$は放物線$y=\frac{1}{4}x^2$の接線であり、$(2s_0,\ s_0^2)$を接点とする。
$s$を$s_0$に固定すると
y=s_0x-s_0^2,\quad x\in(s_0-1,\ s_0+1)
開線分が得られ、これは放物線$y=\frac{1}{4}x^2$に接点$(2s_0,\ s_0^2)$で接する。
接点が線分内部にあることの確認
s_0-1<2s_0<s_0+1 \iff -1<s_0<1
は$s_0\in(-1,1)$で常に成立する。したがって、すべての線分は必ず内部の1点で放物線に接しており、これが求める領域の上側境界を与える(等号成立は接点のみ)。
$$
y\le \frac{1}{4}x^2
$$
線分の両端点の軌跡(下側境界)
線分の両端点を$s_0$の関数として調べる。
左端($x=s_0-1$):
$$
y=s_0(s_0-1)-s_0^2=-s_0
$$
$X=s_0-1$とおくと$s_0=X+1$なので、
$$
Y=-X-1\quad(X\in(-2,0))
$$
右端($x=s_0+1$):
$$
y=s_0(s_0+1)-s_0^2=s_0
$$
$X=s_0+1$とおくと$s_0=X-1$なので、
$$
Y=X-1\quad(X\in(0,2))
$$
つまり、線分の左端は直線$y=-x-1$上を、右端は直線$y=x-1$上を動く。$s,t$がともに開区間であることから、端点自体は領域に含まれない。この2直線が求める領域の下側境界(除外)である。
掃引による結論
$s_0$を$-1$から$1$まで連続的に動かすと、線分は連続的に掃引される。各線分は
- 内部の1点で上側境界(放物線)に接し
- 両端が下側境界(2直線)上を動く
ため、掃引によって通過する領域はこの上下境界に挟まれた開領域に一致する。
\begin{cases}
x-1< y\le \frac{1}{4}x^2 & (x\ge 0)\\
-x-1< y\le \frac{1}{4}x^2 & (x<0)
\end{cases}
これは、次に紹介する$x$を固定する方法に比べて、上側境界は「接線群の包絡線」、下側境界は「線分の端点の軌跡」として幾何的に得られる点が特徴である。
(2)-1-2 『xの固定(順像法)』
$x=x_0$として$x$を固定する。
y=-\left(s-\frac{1}{2}x_0\right)^2+\frac{1}{4}x_0^2
$x=s+t,\ -1<t<1$より、
x_0-1< s< x_0+1
さらに$-1<s<1$も考慮すると、
$x_0\ge0$の場合は、
x_0-1< s\le 1
となるので、
x_0-1< y\le \frac{1}{4}x_0^2
一方、$x_0<0$の場合は、
-1< s\le x_0+1
したがって、
-x_0-1< y\le \frac{1}{4}x_0^2
以上をまとめると、
\begin{cases}
x-1< y\le \frac{1}{4}x^2\ (x\ge 0)\\
-x-1< y\le \frac{1}{4}x^2\ (x<0)
\end{cases}
(2)-2 逆像法
このように順像法での処理が難しい場合、逆像法を用いるとうまくいくことがある。
\begin{cases}
x=s+t\\
y=st
\end{cases}
を変形して$s,t$を$x,y$の式で表すことができれば、
-1<s<1,\ -1<t<1
という前提条件を使って領域を絞り込めそうである。
そこで、上の連立方程式が基本対称式の形になっていることに着目する。$s,t$は実数$A$に関する2次方程式
A^2-xA+y=0
の解に対応する。以下では2次関数の最大・最小を用いて解くのが定石だが、練習を兼ねてあえて別の方法で考える。
解の公式より、
A=\frac{x\pm \sqrt{x^2-4y}}{2}
となる。ゆえに、
-1<\frac{x+ \sqrt{x^2-4y}}{2}<1
かつ
-1<\frac{x- \sqrt{x^2-4y}}{2}<1
かつ
x^2-4y\ge 0
が成立するような$x,y$の領域を求めればよい。整理すると、
\begin{cases}
-2-x<\sqrt{x^2-4y}<2-x \\
x-2<\sqrt{x^2-4y}<2+x\\
x^2-4y\ge 0
\end{cases}
この連立不等式を必要条件から考えると、
-2<x<2
が必要であることがわかる。
(a) $0\le x<2$のとき
\sqrt{x^2-4y}<2-x
より、$y>x-1$
(b) $-2<x<0$のとき
\sqrt{x^2-4y}<2+x
より、$y>-x+1$
まとめると、
\begin{cases}
x-1< y\le \frac{1}{4}x^2\ (x\ge 0)\\
-x-1< y\le \frac{1}{4}x^2\ (x<0)
\end{cases}
これは、(2)-1-2で順像法により得た結果と一致する。
以上より、$x,y$の取りうる領域は次のようになる。
プログラム
最後に、今回の領域の図示に用いたPythonプログラムを以下に示す。
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
import math
m=20
L=1
n=20
s=np.linspace(-L,L,n)
t=np.linspace(-L,L,n)
S,T=np.meshgrid(s,t)
X=np.zeros((n,n))
Y=np.zeros((n,n))
for i in range(n):
for k in range(n):
X[i][k]=S[i][k]+T[i][k]
## (1)
#Y[i][k]=2*S[i][k]-3*T[i][k]
## (2)
Y[i][k]=S[i][k]*T[i][k]
plt.xlabel("s")
plt.ylabel("t")
plt.scatter(S,T)
plt.savefig("変換前_2.png")
plt.show()
plt.xlabel("x")
plt.ylabel("y")
plt.scatter(X,Y)
plt.savefig("変換後_2.png")
plt.show()
plt.xlabel("x")
plt.ylabel("y")
plt.contour(X,Y,S,levels=m,)
cbar = plt.colorbar()
cbar.set_label('s')
plt.savefig("変換後_3D_2.png")
plt.show()
plt.xlabel("s")
plt.ylabel("t")
plt.contour(S,T,X,levels=m)
cbar = plt.colorbar()
cbar.set_label('x')
plt.savefig("変換前_3D_2.png")
plt.show()
plt.xlabel("s")
plt.ylabel("t")
plt.contour(S,T,Y,levels=m)
cbar = plt.colorbar()
cbar.set_label('y')
plt.savefig("変換前2_3D_2.png")
plt.show()
まとめ
今回は、受験数学における『軌跡と領域』の考え方を復習した。基本となるのは、入力の領域を変換することで出力の領域を求めるという考え方である。逆像法では、出力が条件を満たすために必要な入力の存在条件を考えることになる。
参考文献






