開発環境
- macOS High Sierra - Apple
- Emacs (Text Editor)
- Python 3.6 (プログラミング言語)
Pythonからはじめる数学入門 (Amit Saha (著)、黒川 利明 (翻訳)、オライリージャパン)の4章(SymPyで代数と式を計算する)、4.6(プログラミングチャレンジ)、問題4-2(グラフを使った方程式ソルバー)を取り組んでみる。
コード(Emacs)
Python 3
#!/usr/bin/env python3
from sympy import pprint, symbols, sympify, SympifyError, plot, solve
x, y = symbols('x, y')
if __name__ == '__main__':
i = 0
while True:
expr1 = input('Enter your first expression in terms of x and y: ')
if expr1 == 'q':
break
expr2 = input('Enter your second expression in terms of x and y: ')
try:
expr1 = sympify(expr1)
expr2 = sympify(expr2)
except SympifyError as err:
print(type(err), err)
else:
s = solve((expr1, expr2), dict=True)
for d in s:
pprint(f'x = {d.get(x)}, y = {d.get(y)}')
ys = solve(expr1, y) + solve(expr2, y)
p = plot(*ys, legend=True, show=False)
p.save(f'sample2_{i}.svg')
i += 1
入出力結果(Terminal, Jupyter(IPython))
$ ./sample2.py Enter your first expression in terms of x and y: y - x Enter your second expression in terms of x and y: y - x - 1 Enter your first expression in terms of x and y: y - x Enter your second expression in terms of x and y: y - 2 * x x = 0, y = 0 Enter your first expression in terms of x and y: y - x ** 2 + 1 Enter your second expression in terms of x and y: y + x ** 2 - 2 x = -sqrt(6)/2, y = 1/2 x = sqrt(6)/2, y = 1/2 Enter your first expression in terms of x and y: y - x ** 2 - 1 Enter your second expression in terms of x and y: y + x ** 2 + 2 x = -sqrt(6)*I/2, y = -1/2 x = sqrt(6)*I/2, y = -1/2 Enter your first expression in terms of x and y: q $
0 コメント:
コメントを投稿