冬休み課題②:円周率を使わない話 - マクロツイーターにある冬休みの課題をSymPyの宣伝を兼ねて提出する。
問題は上記のリンクを参照して欲しい。
import sympy t = sympy.Symbol('t') x = sympy.Symbol('x(t)') y = sympy.Symbol('y(t)') alpha = sympy.Symbol(r'\alpha') ## alpha = 4 * (sympy.sqrt(2) - 1) / 3 x_0, y_0 = 1, 0 x_1, y_1 = 1, alpha x_2, y_2 = alpha, 1 x_3, y_3 = 0, 1 x = pow((1-t),3)*x_0 + 3*pow((1-t),2)*t*x_1 + 3*(1-t)*pow(t,2)*x_2 + pow(t,3)*x_3 y = pow((1-t),3)*y_0 + 3*pow((1-t),2)*t*y_1 + 3*(1-t)*pow(t,2)*y_2 + pow(t,3)*y_3 A = (1/2)*sympy.integrate((x * sympy.diff(y, t) - y * sympy.diff(x, t)), (t, 0, 1)) print("pict2e:",4*A.evalf()) print("sympy.pi:",sympy.pi.evalf()) print("diff",4*A.evalf() - sympy.pi.evalf())
最も、ヒントがあるので自分では殆ど考えていない。これとPythonTeXを組み合わせれば美しいレポートを作ることが出来るがそれは今後の課題としよう(?)。