Unityと物理・数学の話

UnityやPython、天文関連、物理学、生物学を中心に更新していく予定です。塾講師、家庭教師の仕事をやっているのでお仕事の依頼はコメントにて承っております。当面はUnityをPythonで動かすのを試行錯誤しています。

【東大理系数学2018第1問】をPythonで計算させて解答してみた

こんにちは。unitypyです。

東大理系数学2018第1問の解答をpythonで計算させて求めて解答してみたのでご一読ください。

 

以下問題です。

f:id:unitypy:20180303141740j:plain

 

以下が計算過程と解答です。

本当は増減表を書くところから始めますが、pythonで作図してから解答の方向性を決めていきましょう。

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi, np.pi, 512, endpoint=False)
y = x/np.sin(x) + np.cos(x)
plt.plot(x, y)
plt.ylim(0,10)
plt.show()

f:id:unitypy:20180303141947p:plain

このように出力されます。このようにみてしまえば、もう極限値も増減表もどんな感じの値になるか想像できてしまいますね。

本来ならばx=0では関数が定義できないですが、このプロットでは微小な点をプロットする事で書いているのであたかもx=0で連続な関数のように見えています。この点は注意しておきましょう。

では、ちゃんと計算して解答していきましょう。

import sympy as sy
 
x = sy.Symbol('x')
g1 = sy.diff(x/sy.sin(x) + sy.cos(x),x)
print(g1)

出力:

-x*cos(x)/sin(x)**2 - sin(x) + 1/sin(x)

 

 次に増減表ですが、まず増減表を作る前に微分した関数の概形を同じようにプロットしていきましょう。

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-np.pi, np.pi, 512, endpoint=False)
g2 = -x*np.cos(x)/np.sin(x)**2 - np.sin(x) + 1/np.sin(x)
plt.plot(x,g2)
plt.ylim(-10,10)
plt.show()

 f:id:unitypy:20180303151647p:plain

本問題では、 

-x*cos(x)/sin(x)**2 - sin(x) + 1/sin(x)

を整理すると

 cos(x)(sin(x)cos(x) -x)/sin^2(x)

となって、

sin(x)cos(x)-x

が0<x<πにおいて負であることを微分することで明らかにして、

結局cos(x)の正負が増減表の正負と逆に対応することから増減表を書くことができ、それを用いながら極限の計算をすればいいことになります。

この問題は東大数学の特徴をよく表していて、単純に微分して増減表を書く、という内容ではないため、そのままpythonで解くというのはうまくいかなかったのに対して、

単純に計算した方がはやく解けるので、pythonを使わないことにします。

まあそもそも上のグラフのプロットで増減の様子が分かりますしね。

xを∞に近づける方の極限では、pythonに計算させるとエラーを吐くので、グラフのプロットから、あるいは関数の形から容易に∞になるということが分かります。

xを+0に近づける方の極限は

 入力:

 
import sympy as sy

x = sy.Symbol('x')
a = sy.limit(x/sy.sin(x) + sy.cos(x),x,0)
print(a)

 出力:

2

 ということで極限は2とわかります。□

以上で解答終了とします。増減表の作成についてはある程度工夫しないと東大数学の問題はpythonで対応しにくいことがわかると思います。そのような関数にも対応できるように組めることも目標にしたいと思います。

本問題は普通に計算すれば容易に解けるものであり、本番では受験生はこの問題は確実にとることが期待されていた問題です。増減表の作り方など、まだ学習していない方法が上記にあったとしたら、類題を使った練習しておくとよいでしょう。

  

解答の方向性は以下のサイトを参考にしました。

【東大理系数学2018】を日本酒ぶちこんだ勢いで本気で解答、所感、講評作った話。 - アルコール東大数学全完サークル