開発環境
- OS X El Capitan - Apple (OS)
- Emacs (Text Editor)
- Python 3.5 (プログラミング言語)
Pythonからはじめる数学入門 (Amit Saha (著)、黒川 利明 (翻訳)、オライリージャパン)の7章(初等解析問題を解く)、7.10(プログラミングチャレンジ)、問題7-4(曲線の長さを求める)を取り組んでみる。
問題7-4(曲線の長さを求める)
コード(Emacs)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sympy
import matplotlib.pyplot as plt
import sys
def calc(f, var, start, end):
d1 = sympy.Derivative(f, var).doit()
f0 = sympy.sqrt(1 + d1 ** 2)
return sympy.Integral(f0, (var, start, end)).doit().evalf()
if __name__ == '__main__':
f = input('Enter a function in one variable: ')
var = input('Enter the variable: ')
start = float(input('Enter the start: '))
end = float(input('Enter the end: '))
try:
f = sympy.sympify(f)
except sympify.SympifyError as err:
print(err)
else:
var = sympy.Symbol(var)
print(calc(f, var, start, end))
plt.rcParams['figure.figsize'] = (5, 5)
p = sympy.plot(f, (var, start, end), show=False)
p.save('{0}.png'.format(sys.argv[1]))
p.show()
入出力結果(Terminal, IPython)
$ ./sample4.py sample4_1 Enter a function in one variable: 2 * x**2 + 3 * x + 1 Enter the variable: x Enter the start: -5 Enter the end: 10 268.372650946022 $ ./sample4.py sample4_2 Enter a function in one variable: 100 Enter the variable: x Enter the start: -5 Enter the end: 10 15.0000000000000 $ ./sample4.py sample4_3 Enter a function in one variable: x**3 + 2 * x**2 + 3 * x + 4 Enter the variable: x Enter the start: -5 Enter the end: 10 1320.62772125719 $



0 コメント:
コメントを投稿