2020年7月16日木曜日

学習環境

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


  1. 準線上の点 P を

    ( - p , b )

    とおく。

    P を通り傾き m の直線の方程式は、

    y - b = m ( x + p )
    y = m ( x + p ) + b

    この直線が放物線と接するのは、

    ( m ( x + p ) + b ) 2 = 4 p x
    m 2 ( x 2 + 2 p x + p 2 ) + 2 m b ( x + p ) + b 2 - 4 p x = 0
    m 2 x 2 + ( 2 m 2 p + 2 m b - 4 p ) x + m 2 p 2 + 2 m b p + b 2 = 0

    が重解をもつときである。

    そのとき、

    D 4 = ( m 2 p + m b - 2 p ) 2 - m 2 ( m 2 p 2 + 2 m b p + b 2 ) = 0
    m 4 p 2 + m 2 b 2 + 4 p 2 + 2 m 3 b p - 4 m b p - 4 m 2 p 2 - m 4 p 2 - 2 m 3 b p - m 2 b 2 = 0
    - 4 p 2 m 2 - 4 b p m + 4 p 2 = 0
    m 2 + b p m - 1 = 0

    解と係数の関係により、この2つの解の積は-1である。

    よって、 2本の接線は直交する。

    (証明終)

コード

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

print('13.')

p = -1
x, y = symbols(' x, y', real=True)
eq = y ** 2 - 4 * p * x
ys = solve(eq, y)
m = symbols('m', nonzero=True, real=True)
p0 = plot(*ys,
          (x, -15, 5),
          ylim=(-10, 10),
          legend=False,
          show=False)

for b in range(-2, 3):
    l = m * (x + p) + b
    ms = solve((m ** 2 * p + m * b - 2 * p) ** 2 -
               m ** 2 * (m ** 2 * p ** 2 + 2 * m * b * p + b ** 2), m)
    for m0 in ms:
        p0.append(plot(l.subs({m: m0}),
                       (x, -15, 5),
                       ylim=(-10, 10),
                       legend=False,
                       show=False)[0])
colors = ['red', 'green', 'blue', 'brown', 'orange',
          'purple', 'pink', 'gray', 'skyblue', 'yellow']
for o, color in zip(p0, colors):
    o.line_color = color
    print(o, color)
p0.save('sample13.png')
p0.show()

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

% ./sample13.py
13.
cartesian line: -2*sqrt(-x) for x over (-15.0, 5.0) red
cartesian line: 2*sqrt(-x) for x over (-15.0, 5.0) green
cartesian line: (-1 + sqrt(2))*(x - 1) - 2 for x over (-15.0, 5.0) blue
cartesian line: (-sqrt(2) - 1)*(x - 1) - 2 for x over (-15.0, 5.0) brown
cartesian line: (-1/2 + sqrt(5)/2)*(x - 1) - 1 for x over (-15.0, 5.0) orange
cartesian line: (-sqrt(5)/2 - 1/2)*(x - 1) - 1 for x over (-15.0, 5.0) purple
cartesian line: 1 - x for x over (-15.0, 5.0) pink
cartesian line: x - 1 for x over (-15.0, 5.0) gray
cartesian line: (1/2 - sqrt(5)/2)*(x - 1) + 1 for x over (-15.0, 5.0) skyblue
cartesian line: (1/2 + sqrt(5)/2)*(x - 1) + 1 for x over (-15.0, 5.0) yellow
%

0 コメント:

コメントを投稿