学習環境
- Surface
- Windows 10 Pro (OS)
- Nebo(Windows アプリ)
- iPad
- MyScript Nebo - MyScript(iPad アプリ(iOS))
- 参考書籍
新装版 数学読本3 (松坂 和夫(著)、岩波書店)の第12章(放物線・だ円・双曲線 - 2次関数)、12.2(2次曲線と直線)、だ円・双曲線と直線の問21の解答を求めてみる。
問題のだ円に関する点 P の極線の方程式は
点
に関する極線の方程式は
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 コメント:
コメントを投稿