はいどうも
乙pyです。

久々に
東の方の大学の入試問題を
解いていきたいと思います。

解説動画はこちら





さて
問題はこれです。
スクリーンショット 2019-09-28 16.27.37

さて
こいつを解くには
sympy
を用います。

sympyでは複雑な計算結果を
求めることできます。

ライブラリを読み込みしておきましょう。
import sympy
x = sympy.Symbol('x')

x をシンボル変数として読み込みしておくと
数式を定義する際に使うことができます。

次に数式の打ち込みです。

何かしらの変数に
数式を代入していきます。
f = (x**2+x/sympy.sqrt(1+x**2))*(1+x/((1+x**2)*sympy.sqrt(1+x**2)))

上の問題の数式をプログラムでの数式に置き換えると
こんな感じになります。

()で割り算などの優先順位をつけるのは
数学の書き方と一緒です。
ルートはsqrt関数を用いて表します。

最後に積分の計算です。
sympyでは

sympy.integrate(数式 , (x , 0 , 1 ))

となります。

最後に計算結果を表示です。

変数に計算結果を代入してプリントするだけですね。

まとめると

f = (x**2+x/sympy.sqrt(1+x**2))*(1+x/((1+x**2)*sympy.sqrt(1+x**2)))
F = sympy.integrate(f , (x,0,1))
print(F)

-35/12 + pi/8 + 5*sqrt(2)/2

はい答え出ました。

計算結果がプログラム上での表記で出力されます。

通常の数式表示と違うので
これだと分かりづらいかも知れませんね

そんな時は
Latexという数式を表示させるための
言語があるので
その形式で出力し直すことができます。

print(sympy.latex(F))

- \frac{35}{12} + \frac{\pi}{8} + \frac{5 \sqrt{2}}{2}

はいこいつを
JupyterNotebookなどのマークダウンセルに打ち込みすれば
通常の数式表示されます。

答えを数式表示させると
スクリーンショット 2019-09-28 16.43.22

はいこれで
分かりやすくなりましたね。


さて
いかがでしたでしょうか?
Sympyを使うと
結構大変な計算もすぐに
解けるし助かるんじゃないかと思います。

そもそもの
数式を入力するのに
30秒以上掛かってるって?

気のせいです!!!

今回はこれまでです。
それでは。