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=4px
    m2(x2+2px+p2)+2mb(x+p)+b2-4px=0
    m2x2+(2m2p+2mb-4p)x+m2p2+2mbp+b2=0

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

    そのとき、

    D4=(m2p+mb-2p)2-m2(m2p2+2mbp+b2)=0
    m4p2+m2b2+4p2+2m3bp-4mbp-4m2p2-m4p2-2m3bp-m2b2=0
    -4p2m2-4bpm+4p2=0
    m2+bpm-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 コメント:

コメントを投稿