## 2020年7月24日金曜日

### 数学 - Python - 放物線・だ円・双曲線 - 2次関数 - 2次曲線と直線 - だ円・双曲線と直線 - 外部の点、2本の接線、接点を通る直線、曲線、極

1. 接点

${Q}_{1},{Q}_{2}$

をそれぞれ

$\left({x}_{1},{y}_{1}\right),\left({x}_{2},{y}_{2}\right)$

とおくと、 接線の方程式はそれぞれ

$\frac{{x}_{1}x}{{a}^{2}}+\frac{{y}_{1}y}{{b}^{2}}=1$
$\frac{{x}_{2}x}{{a}^{2}}+\frac{{y}_{2}y}{{b}^{2}}=1$

この接線は 点 P を通る ので、

$\frac{{x}_{1}{x}_{0}}{{a}^{2}}+\frac{{y}_{1}{y}_{0}}{{b}^{2}}=1$
$\frac{{x}_{2}{x}_{0}}{{a}^{2}}+\frac{{y}_{2}{y}_{0}}{{b}^{2}}=1$

2点

${Q}_{1},{Q}_{2}$

を通る直線の方程式は

$y-{y}_{1}=\frac{{y}_{2}-{y}_{1}}{{x}_{2}-{x}_{1}}\left(x-{x}_{1}\right)$

以上より

$\left({x}_{2}-{x}_{1}\right)\frac{{x}_{0}}{{a}^{2}}+\left({y}_{2}-{y}_{1}\right)\frac{{y}_{0}}{{b}^{2}}=0$
$\frac{{y}_{2}-{y}_{1}}{{x}_{2}-{x}_{1}}=-\frac{{x}_{0}{b}^{2}}{{y}_{0}{a}^{2}}$
$y-{y}_{1}=-\frac{{x}_{0}{b}^{2}}{{y}_{0}{a}^{2}}\left(x-{x}_{1}\right)$
$\frac{{y}_{0}y}{{b}^{2}}-\frac{{y}_{0}{y}_{1}}{{b}^{2}}=-\frac{{x}_{0}x}{{a}^{2}}+\frac{{x}_{0}{x}_{1}}{{a}^{2}}$
$\frac{{x}_{0}x}{{a}^{2}}+\frac{{y}_{0}y}{{b}^{2}}=\frac{{x}_{0}{x}_{1}}{{a}^{2}}+\frac{{y}_{0}{y}_{1}}{{b}^{2}}$
$\frac{{x}_{0}x}{{a}^{2}}+\frac{{y}_{0}y}{{b}^{2}}=1$

（証明終）

コード

#!/usr/bin/env python3
from sympy import plot, solve, symbols, pprint, Rational

print('20.')

x, y, m = symbols('x, y, m', real=True)
a = 2
b = 1
eq = x ** 2 / a ** 2 + y ** 2 / b ** 2 - 1
ys = solve(eq, y)
px = -3
py = 4
pd = {x: px, y: py}
l = m * (x - px) + py
pprint(eq.subs({y: l}).expand())
d = (6 * m ** 2 + 8 * m) ** 2 - \
4 * (m ** 2 + Rational(1, 4)) * (9 * m ** 2 + 24 * m + 15)
ms = solve(d)
l1, l2 = [l.subs({m: m0}) for m0 in ms]
l3 = solve(px * x / a ** 2 + py * y / b ** 2 - 1, y)[0]
p = plot(*ys,
l1, l2, l3,
(x, -5, 5),
ylim=(-5, 5),
legend=True,
show=False)

colors = ['red', 'green', 'blue', 'brown', 'orange',
'purple', 'pink', 'gray', 'skyblue', 'yellow']
for o, color in zip(p, colors):
o.line_color = color

p.save('sample20.png')
p.show()


% ./sample20.py
20.
2
2  2      2        2                  x
m ⋅x  + 6⋅m ⋅x + 9⋅m  + 8⋅m⋅x + 24⋅m + ── + 15
4
%