2020年7月25日土曜日

学習環境

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


  1. 問題のだ円に関する点 P の極線の方程式は

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

    P '

    に関する極線の方程式は

    x 0 ' x a 2 + y 0 ' y b 2 = 1

    P の極線上に点

    P '

    がある場合、

    x 0 x 0 ' a 2 + y 0 y 0 ' b 2 = 1

    よって、 点 P は 点

    P '

    の極線上にある。

    (証明終)

コード

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

print('21.')

x, y, m, m1 = symbols('x, y, m, m1', 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]
p1x = 4
p1y = l3.subs({x: p1x})
p1d = {x: p1x, y: p1y}
l4 = m1 * (x - p1x) + p1y
pprint(eq.subs({y: l4}).expand())
d1 = (-8 * m1 ** 2 + 2 * m1) ** 2 - \
    4 * (m1 ** 2 + Rational(1, 4)) * (16 * m1 ** 2 - 8 * m1 * 1)
ms1 = solve(d1)
l5, l6 = [l4.subs({m1: m0}) for m0 in ms1]
l7 = solve(p1x * x / a ** 2 + p1y * y / b ** 2 - 1, y)[0]
p = plot(*ys,
         l1, l2, l3, l5, l6, l7,
         (x, -5, 5),
         ylim=(-5, 5),
         legend=False,
         show=False)

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('sample21.png')
p.show()

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

% ./sample21.py
21.
                                        2     
 2  2      2        2                  x      
m ⋅x  + 6⋅m ⋅x + 9⋅m  + 8⋅m⋅x + 24⋅m + ── + 15
                                       4      
                                             2
  2  2       2          2                   x 
m₁ ⋅x  - 8⋅m₁ ⋅x + 16⋅m₁  + 2⋅m₁⋅x - 8⋅m₁ + ──
                                            4 
cartesian line: -sqrt(4 - x**2)/2 for x over (-5.0, 5.0) red
cartesian line: sqrt(4 - x**2)/2 for x over (-5.0, 5.0) green
cartesian line: (-12/5 - sqrt(69)/5)*(x + 3) + 4 for x over (-5.0, 5.0) blue
cartesian line: (-12/5 + sqrt(69)/5)*(x + 3) + 4 for x over (-5.0, 5.0) brown
cartesian line: 3*x/16 + 1/4 for x over (-5.0, 5.0) orange
cartesian line: 1 for x over (-5.0, 5.0) purple
cartesian line: 2*x/3 - 5/3 for x over (-5.0, 5.0) pink
cartesian line: 1 - x for x over (-5.0, 5.0) gray
%

0 コメント:

コメントを投稿