開発環境
- macOS High Sierra - Apple
- Emacs (Text Editor)
- Python 3.6 (プログラミング言語)
Pythonからはじめる数学入門 (Amit Saha (著)、黒川 利明 (翻訳)、オライリージャパン)の7章(初等解析問題を解く)、7.10(プログラミングチャレンジ)、問題7-1(ある点での関数の連続性を検証する)を取り組んでみる。
コード(Emacs)
Python 3
#!/usr/bin/env python3
from sympy import pprint, symbols, sympify, SympifyError, Limit
def is_continuous(f, v, p):
try:
f = sympify(f)
except SympifyError as err:
print(err)
return
v = symbols(v)
try:
p = float(p)
except Exception as err:
print(type(err), err)
return
l = Limit(f, v, p, dir='-').doit()
r = Limit(f, v, p, dir='+').doit()
return l == r
if __name__ == '__main__':
while True:
f = input('Enter a function in one variable: ')
if f == 'q':
break
v = input('Enter the variable: ')
p = input('Enter the point to check the continuity at: ')
b = is_continuous(f, v, p)
if not b is None:
if b:
print(f'{f} is continuous at {p}')
else:
print(f'{f} is not continuous at {p}')
入出力結果(Terminal, Jupyter(IPython))
$ ./sample1.py Enter a function in one variable: x * Enter the variable: x Enter the point to check the continuity at: 0 Sympify of expression 'could not parse 'x *'' failed, because of exception being raised: SyntaxError: unexpected EOF while parsing (<string>, line 1) Enter a function in one variable: 1/x Enter the variable: x Enter the point to check the continuity at: 1 1/x is continuous at 1 Enter a function in one variable: 1/x Enter the variable: x Enter the point to check the continuity at: 0 1/x is not continuous at 0 Enter a function in one variable: x/y Enter the variable: y Enter the point to check the continuity at: 1 x/y is continuous at 1 Enter a function in one variable: 1/x Enter the variable: x Enter the point to check the continuity at: a <class 'ValueError'> could not convert string to float: 'a' Enter a function in one variable: q $
0 コメント:
コメントを投稿