2020年7月24日金曜日

学習環境

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


  1. 接点

    Q1,Q2

    をそれぞれ

    (x1,y1),(x2,y2)

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

    x1xa2+y1yb2=1
    x2xa2+y2yb2=1

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

    x1x0a2+y1y0b2=1
    x2x0a2+y2y0b2=1

    2点

    Q1,Q2

    を通る直線の方程式は

    y-y1=y2-y1x2-x1(x-x1)

    以上より

    (x2-x1)x0a2+(y2-y1)y0b2=0
    y2-y1x2-x1=-x0b2y0a2
    y-y1=-x0b2y0a2(x-x1)
    y0yb2-y0y1b2=-x0xa2+x0x1a2
    x0xa2+y0yb2=x0x1a2+y0y1b2
    x0xa2+y0yb2=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 コメント:

コメントを投稿