2020年7月19日日曜日

学習環境

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


  1. 双曲線と x 軸との交点

    ( ± a , 0 )

    における接線の方程式は

    x = ± a

    で、

    ± a x a 2 - 0 y b 2 = 1
    x = ± a

    なので問題の方程式となる。

    y 0 0

    の場合、 点

    ( x 0 , y 0 )

    における双曲線の接線の方程式を

    y = m ( x - x 0 ) + y 0

    とおくと、

    x 2 a 2 - ( m x - ( m x 0 - y 0 ) ) 2 b 2 = 1
    ( b 2 - a 2 m 2 ) x 2 + 2 a 2 m ( m x 0 - y 0 ) x - a 2 ( m x 0 - y 0 ) 2 - a 2 b 2 = 0

    が重解をもち、 その解が

    x 0

    なので、 解と係数の関係により、

    x 0 = a 2 m ( m x 0 - y 0 ) a 2 m 2 - b 2
    a 2 m 2 x 0 - b 2 x 0 = a 2 m 2 x 0 - a 2 m y 0
    m = b 2 x 0 a 2 y 0

    これを接線の方程式に代入すると、

    y = b 2 x 0 a 2 y 0 ( x - x 0 ) + y 0
    a 2 y 0 y = b 2 x 0 x - b 2 x 0 2 + a 2 y 0 2
    b 2 x 0 x - a 2 y 0 y = b 2 x 0 2 - a 2 y 0 2
    x 0 x a 2 - y 0 y b 2 = x 0 2 a 2 - y 0 2 b 2

    よって、

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

    (証明終)

コード

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

print('15.')

x, y = symbols('x, y', real=True)
a, b = 2, 1
eq = x ** 2 / a ** 2 - y ** 2 / b ** 2 - 1
ys = solve(eq, y)

p = plot(*ys,
         (x, -10, 10),
         ylim=(-10, 10),
         legend=False,
         show=False)

for x0 in [-5, -3, 4, 6]:
    ys0 = solve(eq.subs({x: x0}))
    for y0 in ys0:
        l = solve(x0 * x / a ** 2 - y0 * y / b ** 2 - 1, y)[0]
        p.append(
            plot(l, legend=False, show=False)[0]
        )
colors = ['red', 'green', 'blue', 'brown', 'orange',
          'purple', 'pink', 'gray', 'skyblue', 'yellow']
for o, color in zip(p, colors):
    o.line_color = color
    print(o, color)
p.save('sample15.png')
p.show()

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

% ./sample15.py
15.
cartesian line: -sqrt(x**2 - 4)/2 for x over (-10.0, 10.0) red
cartesian line: sqrt(x**2 - 4)/2 for x over (-10.0, 10.0) green
cartesian line: sqrt(21)*(5*x + 4)/42 for x over (-10.0, 10.0) blue
cartesian line: -sqrt(21)*(5*x + 4)/42 for x over (-10.0, 10.0) brown
cartesian line: sqrt(5)*(3*x + 4)/10 for x over (-10.0, 10.0) orange
cartesian line: -sqrt(5)*(3*x + 4)/10 for x over (-10.0, 10.0) purple
cartesian line: sqrt(3)*(1 - x)/3 for x over (-10.0, 10.0) pink
cartesian line: sqrt(3)*(x - 1)/3 for x over (-10.0, 10.0) gray
cartesian line: sqrt(2)*(2 - 3*x)/8 for x over (-10.0, 10.0) skyblue
cartesian line: sqrt(2)*(3*x - 2)/8 for x over (-10.0, 10.0) yellow
%

0 コメント:

コメントを投稿