2016年8月21日日曜日

開発環境

Pythonからはじめる数学入門 (Amit Saha (著)、黒川 利明 (翻訳)、オライリージャパン)の4章(SymPyで代数と式を計算する)、4.6(プログラミングチャレンジ)、問題4-2(グラフを使った方程式ソルバー)を取り組んでみる。

問題4-2(グラフを使った方程式ソルバー)

コード(Emacs)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-


import sympy
from sympy.plotting import plot


def plot_expressions(*exprs):
    y = sympy.Symbol('y')
    exprs_y = map(lambda expr: sympy.solve(expr, y)[0], exprs)
    p = plot(*exprs_y, show=False)
    p.save('sample2.png')
    p.show()

if __name__ == '__main__':
    expr1 = input('Enter your first expression in terms of x and y: ')
    expr2 = input('Enter your first expression in terms of x and y: ')

    try:
        expr1 = sympy.sympify(expr1)
        expr2 = sympy.sympify(expr2)
    except SympifyError as err:
        print(err)
    except Exception as err:
        print(err)
    else:
        print(sympy.solve((expr1, expr2), dict=True))        
        plot_expressions(expr1, expr2)

入出力結果(Terminal, IPython)

$ ./sample2.py
Enter your first expression in terms of x and y: 2 * x + 3 * y - 6 
Enter your first expression in terms of x and y: 3 * x + 2 * y - 12 
[{x: 24/5, y: -6/5}]
$

0 コメント:

コメントを投稿