2020年7月19日日曜日

学習環境

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


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

    (±a,0)

    における接線の方程式は

    x=±a

    で、

    ±axa2-0yb2=1
    x=±a

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

    y00

    の場合、 点

    (x0,y0)

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

    y=m(x-x0)+y0

    とおくと、

    x2a2-(mx-(mx0-y0))2b2=1
    (b2-a2m2)x2+2a2m(mx0-y0)x-a2(mx0-y0)2-a2b2=0

    が重解をもち、 その解が

    x0

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

    x0=a2m(mx0-y0)a2m2-b2
    a2m2x0-b2x0=a2m2x0-a2my0
    m=b2x0a2y0

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

    y=b2x0a2y0(x-x0)+y0
    a2y0y=b2x0x-b2x02+a2y02
    b2x0x-a2y0y=b2x02-a2y02
    x0xa2-y0yb2=x02a2-y02b2

    よって、

    x0xa2-y0yb2=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 コメント:

コメントを投稿