学習環境
- Surface
- Windows 10 Pro (OS)
- Nebo(Windows アプリ)
- iPad
- MyScript Nebo - MyScript(iPad アプリ(iOS))
- 参考書籍
代数への出発 (新装版 数学入門シリーズ) (松坂 和夫(著)、岩波書店)の第5章(連立方程式と高次方程式) 、問5の解答を求めてみる。
問題の連立方程式の解がただ1組だけの解をもつためにはこれが重能をもてばよい。
よって k が-5または5のときただ1組の解をもつ。
解を求める。
よって、 k が5の場合、
k が-5の場合、
コード
#!/usr/bin/env python3
from unittest import TestCase, main
from sympy import symbols, solve, Rational, plot, sqrt
print('5.')
x, y, k = symbols('x, y, k')
eq1 = 4 * x + 3 * y - k
eq2 = x ** 2 + y ** 2 - 1
class TestSimultanEousequations(TestCase):
def test_k(self):
y0 = solve(eq1, y)[0]
eq = eq2.subs({y: y0})
self.assertEqual(
eq.expand(),
((25 * x ** 2 - 8 * k * x + k ** 2 - 9) / 9).expand(),
)
ks = solve(16 * k ** 2 - 25 * (k ** 2 - 9))
self.assertEqual(ks, [-5, 5])
def test_xy(self):
xys = [solve([eq1.subs({k: k0}),
eq2.subs({k: k0})])
for k0 in [-5, 5]]
for xy, xy0 in zip(xys, [{x: s * Rational(4, 5), y: s * Rational(3, 5)}
for s in [-1, 1]]):
self.assertEqual(len(xy), 1)
self.assertEqual(xy[0], xy0)
p = plot(*[(k0 - 4 * x) / 3 for k0 in [-5, 5]],
*[s * sqrt(1 - x ** 2) for s in [-1, 1]],
(x, -5, 5),
ylim=(-5, 5),
legend=True,
show=False)
colors = ['red', 'green', 'blue', 'brown', 'orange', 'pink']
for o, color in zip(p, colors):
o.line_color = color
p.save('sample5.png')
p.show()
if __name__ == "__main__":
main()
入出力結果(Zsh、PowerShell、Terminal、Jupyter(IPython))
% ./sample5.py -v
5.
test_k (__main__.TestSimultanEousequations) ... ok
test_xy (__main__.TestSimultanEousequations) ... ok
----------------------------------------------------------------------
Ran 2 tests in 0.285s
OK
%
0 コメント:
コメントを投稿