Table of Contents
問題: H31東京大学大学院工学研究科入試問1
非負の整数$n$に対して$I_n$を以下のように定義します
\[I_n = \int_0^{\pi/4} \tan^n xdx\]- $I_0$, $I_1$, $I_2$を計算せよ
- $n\geq 2$のとき、$I_n$を計算せよ
(1): $I_0$, $I_1$, $I_2$を計算せよ
\[\begin{align*} I_0 &= \int_0^{\pi/4} \tan^0 xdx\\ &= \int_0^{\pi/4} 1 dx\\ &= \frac{\pi}{4} \end{align*}\] \[\begin{align*} I_1 &= \int_0^{\pi/4} \tan xdx\\ &= \int_0^{\pi/4} \frac{\sin x}{\cos x}dx\\ &= [-\log |\cos x|]^{\pi/4}_0\\ &= \frac{1}{2}\log 2 \end{align*}\] \[\begin{align*} I_2 &= \int_0^{\pi/4} \tan^2 xdx\\ &= \int_0^{\pi/4} 1+\tan^2 xdx - \int_0^{\pi/4} 1 dx\\ &= [\tan x]_0^{\pi/4} - \frac{\pi}{4}\\ &= 1 - \frac{\pi}{4} \end{align*}\](2): $n\geq 2$のとき、$I_n$を計算せよ
\(\begin{align*} I_n &= \int_0^{\pi/4} \tan^n xdx\\ &= \int_0^{\pi/4} \tan^{n-2} x\tan^2 xdx\\ &= \int_0^{\pi/4} \tan^{n-2} x\frac{\sin^2 x}{\cos^2 x} xdx\\ &= \int_0^{\pi/4} \tan^{n-2} x\left(1 - \frac{1}{\cos^2 x}\right) xdx\\ &= \int_0^{\pi/4} \tan^{n-2} x dx- \int_0^{\pi/4} \frac{\tan^{n-2} x}{\cos^2 x}dx \quad\quad\tag{1.1} \end{align*}\)
(1.1)の第一項は$I_{n-2}$と一致することがわかります. 第二項については、$t = \tan x$と変数変換すると
\[\frac{dx}{dt}= \frac{1}{\cos^2 x}\]に留意すると
\[\begin{align*} \int_0^{\pi/4} \frac{\tan^{n-2} x}{\cos^2 x}dx &= \int_0^{\pi/4} t^{n-2} dt\\ &= \frac{1}{n-1}[\tan^{n-2} x]_0^{\pi/4}\\ &= \frac{1}{n-1} \end{align*}\]従って、
\[I_n = \frac{1}{n-1} - I_{n-2}\]$I_{0}, I_{1}$については(1)ですでに求めてあるので、$n\geq 2$について, $k\in \mathbb N$としたとき
\[I_n = \begin{cases} (-1)^k\frac{\pi}{4} + \sum_{i=1}^k (-1)^{i+k}\frac{1}{2i - 1} & \text{ where } \ \ n = 2k\\[8pt] (-1)^k\frac{\log 2}{2} + \sum_{i=1}^k (-1)^{i}\frac{1}{2i} & \text{ where } \ \ n = 2k + 1 \end{cases}\]Pythonでの確認方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import scipy.integrate as integrate
import numpy as np
import matplotlib.pyplot as plt
def simulate_integrate_tan(power):
n_range = np.arange(0, power+1)
func = np.vectorize(lambda n: integrate.quad(lambda x: np.tan(x)**n, 0, np.pi/4)[0])
return func(n_range)
def simulate_integrate_tan_series(power):
if power == 0:
return np.pi/4
elif power == 1:
return np.log(2)/2
else:
return 1/(power - 1) - simulate_integrate_tan_series(power - 2)
def vectorize_simulate_integrate_tan_series(power):
n_range = np.arange(0, power+1)
func = np.vectorize(lambda n: simulate_integrate_tan_series(power =n))
return func(n_range)
## simulation
### set parameter
POWER = 100
### simulation
naive_result = simulate_integrate_tan(power=POWER)
analysis_result = vectorize_simulate_integrate_tan_series(power=POWER)
np.allclose(naive_result, analysis_result)
References
統計
Python
math
Linux
Ubuntu 20.04 LTS
Shell
English
git
方法論
Ubuntu 22.04 LTS
統計検定
競技プログラミング
フーリエ解析
前処理
SQL
coding
コミュニケーション
Network
ssh
将棋
Data visualization
Docker
Econometrics
VSCode
statistical inference
GitHub Pages
apt
development
システム管理
Coffee
cloud
数値計算
素数
Book
Font
Metrics
Poetry
Ubuntu 24.04 LTS
architecture
aws
shell
systemctl
テンプレート
データ構造
ポワソン分布
会計分析
文字コード
環境構築
論文
App
Bayesian
Dynamic Programming
Keyboard
Processing
R
Steam
filesystem
quarto
regex
(注意:GitHub Accountが必要となります)