2020年7月24日金曜日

学習環境

新装版 数学読本3 (松坂 和夫(著)、岩波書店)の第12章(放物線・だ円・双曲線 - 2次関数)、12.2(2次曲線と直線)、だ円・双曲線と直線の問20の解答を求めてみる。


  1. 接点

    Q 1 , Q 2

    をそれぞれ

    ( x 1 , y 1 ) , ( x 2 , y 2 )

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

    x 1 x a 2 + y 1 y b 2 = 1
    x 2 x a 2 + y 2 y b 2 = 1

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

    x 1 x 0 a 2 + y 1 y 0 b 2 = 1
    x 2 x 0 a 2 + y 2 y 0 b 2 = 1

    2点

    Q 1 , Q 2

    を通る直線の方程式は

    y - y 1 = y 2 - y 1 x 2 - x 1 ( x - x 1 )

    以上より

    ( x 2 - x 1 ) x 0 a 2 + ( y 2 - y 1 ) y 0 b 2 = 0
    y 2 - y 1 x 2 - x 1 = - x 0 b 2 y 0 a 2
    y - y 1 = - x 0 b 2 y 0 a 2 ( x - x 1 )
    y 0 y b 2 - y 0 y 1 b 2 = - x 0 x a 2 + x 0 x 1 a 2
    x 0 x a 2 + y 0 y b 2 = x 0 x 1 a 2 + y 0 y 1 b 2
    x 0 x a 2 + 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()

入出力結果(Zsh、PowerShell、Terminal、Jupyter(IPython))

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

0 コメント:

コメントを投稿