問題文
$a,b$ を実数とする。座標平面上の放物線 $y=x^{2}+ax+b$ を $C$ とおく。 $C$ は、原点で垂直に交わる2本の接線 $\ell_1,\ell_2$ を持つとする。だだし、 $C$ と $\ell_1$ の接点 $\mathrm{P}_1$ の $x$ 座標は、 $C$ と $\ell_2$ の接点 $\mathrm{P}_2$ の $x$ 座標より小さいとする。
- $b$ を $a$ で表せ。また $a$ の値はすべての実数をとりうることを示せ。
- $i=1,2$ に対し、円 $D_i$ を、放物線 $C$ の軸上に中心を持ち、点 $P_i$ で $\ell_i$ と接するものと定める。 $D_2$ の半径が $D_1$ の半径の2倍となるとき、 $a$ の値を求めよ。
(2022 東京大学 文系第1問)
- $b=\frac{1}{4}(a^2+1)$
- $a=\frac{3}{4}$
※ この答えは学校側が公表したものではありません。個人が作成した非公式の答えです。
コード
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as ani
import matplotlib.patches as patches
'''
放物線
'''
def f(x,a,b):
y = x**2 + a*x + b
return y
'''
図の準備
'''
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_xlim(-4,4)
ax.set_ylim(-2,6)
ax.axhline(0,color='0.6')
ax.axvline(0,color='0.6')
ax.set_aspect("equal")
ax.grid()
ax.set_title("2022東大数学 文系第1問",pad=15)
'''
変数の準備
'''
x = np.arange(-4,4.1,0.1)
A = np.arange(-3,3.01,0.01)
'''
動画を作成する
'''
imgs = []
for a in A:
#接線ℓ1
m1 = a + np.sqrt(a**2+1)
y = m1*x
l1 = ax.plot(x,y,color="0.3")
#接線ℓ2
m2 = a - np.sqrt(a**2+1)
y = m2*x
l2 = ax.plot(x,y,color="0.3")
#放物線C
b = (a**2+1)/4
y = f(x,a,b)
C = ax.plot(x,y,color="0.0")
jiku = ax.axvline(-a/2,color='0.3',linestyle='dashed')
#円D1
d1y = (m1**2-a*m1+1)/2
d1r = np.sqrt(m1**2+1)/2
d1 = patches.Circle((-a/2,d1y),d1r,fc='darksalmon',alpha=0.5)
D1 = ax.add_patch(d1)
#円D2
d2y = (m2**2-a*m2+1)/2
d2r = np.sqrt(m2**2+1)/2
d2 = patches.Circle((-a/2,d2y),d2r,fc='dodgerblue',alpha=0.5)
D2 = ax.add_patch(d2)
#aの値を図に記載
boxdic = {"facecolor":"white",
"linewidth":0}
text = ax.text(1.5,-1.7,"a = "+"{: .2f}".format(a),fontsize=16,bbox=boxdic)
#a=0.75のときだけ、動画が少し止まるようにする
img = l1+l2+C+[jiku]+[D1]+[D2]+[text]
if a >= 0.751 or a <= 0.749:
imgs.append(img)
else:
for i in range(60):
imgs.append(img)
mov=ani.ArtistAnimation(fig, imgs, 50)
plt.show()