漢字プリント 数学プリント
問題文
次の定積分を求めよ。
  1. $\displaystyle I=\int_{0}^{1} x^2 \, \sqrt{1-x^2} \, dx$
  2. $\displaystyle J=\int_{0}^{1} x^3 \, \log(x^2+1) \, dx$
(2021 神戸大学 理系第2問)
  1. $\dfrac{\pi}{16}$
  2. $\:\dfrac{1}{8}$
※ この答えは学校側が公表したものではありません。個人が作成した非公式の答えです。
コード
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as ani
from matplotlib.colors import ListedColormap

#紙の準備よし
fig = plt.figure()
fig.canvas.draw()
fig.suptitle("2021神戸大数学 理系第2問",
             color="0.5",ha="right",x=0.95,y=0.95,zorder=-1)

ax = fig.add_subplot(111)
right = 8
ax.set_xlim(0,right)
ax.set_ylim(0,4)
ax.set_aspect("equal")
ax.axis("off")

#フォントの準備よし
plt.rcParams["mathtext.fontset"] = 'cm'
fdic={
"clip_on" : True,      
"fontsize"  : 20,
"fontfamily" : "Meiryo",
"verticalalignment" : "baseline",
}

#台本
comment1='''\
$(1)\\quad I=\\int_{0}^{1} x^2 \\, \\sqrt{1-x^2} \\, dx$
'''
lines1=[
r"$\qquad\qquad$置換積分でいきま~す!",
r"$\qquad x=\sin\theta\quad$とすると、$dx=\cos\theta\,d\theta$",
r"$\qquad x:0\longrightarrow1\quad$のとき、$\theta:0\longrightarrow^{\pi}\!/_2$",
]
lines2=[
r"$\qquad \int_{0}^{1} x^2 \, \sqrt{1-x^2} \, dx$",
r"$=\int_{0}^{\frac{\pi}{2}} \sin^2 \theta \, \sqrt{1-\sin^2 \theta} \, d\theta$",
r"$=\int_{0}^{\frac{\pi}{2}} \sin^2 \theta \, \cos^2 \theta \, d\theta$",
r"$=\int_{0}^{\frac{\pi}{2}} \, \dfrac{\sin^2 2\theta}{4} \, d\theta$",
r"$=\,\dfrac{1}{4} \,\int_{0}^{\frac{\pi}{2}} \, \dfrac{1-\cos4\theta}{2} \, d\theta$",
r"$=\,\dfrac{1}{8} \,\left[ \, \theta - \frac{1}{4} \, \sin4\theta \, \right]_{_0}^{^\frac{\pi}{2}}$",
r"$=\,\dfrac{1}{8} \,\left( \, \dfrac{\pi}{2} - 0 \, \right)$",
r"$=\,\dfrac{\pi}{16} \qquad\qquad$"
]
comment2='''\
$(2)\\quad J=\\int_{0}^{1} x^3 \\, \\log(x^2+1) \\, dx$
'''
lines3=[
r"$\qquad\qquad$部分積分でいきま~す!",
r"$\qquad x^3$ の原始関数は、$\frac{1}{4}x^4$ なので...",
]
lines4=[
r"$\qquad \int_{0}^{1} x^3 \, \log(x^2+1) \, dx$",
r"$=\int_{0}^{1} (\,\frac{1}{4} x^4)^{\prime} \, \log(x^2+1) \, dx$",
r"$=\left[\,\frac{1}{4} x^4 \, \log(x^2+1) \right]_{_0}^{^1} - \int_{0}^{1} (\,\frac{1}{4} x^4) \, \frac{2x}{x^2+1} \, dx$",
r"$=\,\frac{1}{4}\,\log\,2 - 0 - \frac{1}{2} \int_{0}^{1} \frac{x^5}{x^2+1} \, dx$",
r"$=\,\frac{1}{4}\,\log\,2 - \frac{1}{2} \int_{0}^{1} \left( x^3 -x +\frac{x}{x^2+1} \right) \, dx$",
r"$=\,\frac{1}{4}\,\log\,2 - \frac{1}{2} \int_{0}^{1} \left\{ x^3 -x +\frac{1}{2}\cdot\frac{(x^2+1)^{\prime}}{x^2+1} \right\} \, dx$",
r"$=\,\frac{1}{4}\,\log\,2 - \frac{1}{2} \left[\,\frac{1}{4}x^4 - \frac{1}{2}x^2 + \frac{1}{2}\,\log(x^2+1) \right]_{_0}^{^1}$",
r"$=\,\frac{1}{4}\,\log\,2 - \frac{1}{2} \left(\,\frac{1}{4} - \frac{1}{2} + \frac{1}{2}\,\log\,2 \right)$",
r"$=\,\frac{1}{4}\,\log\,2 - \frac{1}{8} + \frac{1}{4} - \,\frac{1}{4}\,\log\,2$",
r"$=\,\frac{1}{8} \qquad\qquad$",
]
comment3='''\
お疲れ様でした!!

(*・ω・*)ゞ
'''

#2行目を表示する関数
colors = [(1,1,1,alpha) for alpha in np.arange(0,11)/10]
cmap = ListedColormap(colors)
def show_second_line(imgs,lines,k):
    i = 0
    delta = 0.1
    while True:
        img = [ax.text(0,2.8,lines[k],fontdict=fdic)]
        text = ax.text(0,0.8,lines[k+1],fontdict=fdic)
        img += [text]
        bbox = text.get_window_extent().transformed(ax.transData.inverted())
        X,Y = np.mgrid[-2:bbox.x1+6:delta,0:3:2]
        C = np.zeros(len(X)-1)
        C[2*i+1:2*i+20] = np.arange(0.05,1.00,0.05)
        C[2*i+20:] = 1
        C = np.reshape(C,(len(X)-1,1))
        img += [ax.pcolormesh(X,Y,C,cmap=cmap,zorder=10)]
        imgs.append(img)
        i += 1
        if 2*i+20 > len(X)-1:
            break
        
#次の行へと進む関数
def go_next_line(imgs,lines,k):
    for i in range(21):
        alpha = max((10-i)/10,0)
        img =  [ax.text(0,2.8+i/10,lines[k],fontdict=fdic,alpha=alpha)]
        img += [ax.text(0,0.8+i/10,lines[k+1],fontdict=fdic)]
        imgs.append(img)

#数式の部分の関数
def load_lines(imgs,lines):
    for k in range(len(lines)-2):
        show_second_line(imgs,lines,k)
        go_next_line(imgs,lines,k)
    
    show_second_line(imgs,lines,len(lines)-2)

#コメントの部分の関数
def interlude(imgs,text,frames):
    
    fdic = {
        "ha" : "center",
        "va" : "center",
        "size" : 24,
        "color" : "white",
        "fontfamily": "Meiryo",
        }
    boxdic = {
        "facecolor" : "black",
        "pad" : 200,
        }
    
    for i in range(frames):
        interlude=ax.text(right/2,2,text,
                          fontdict=fdic,bbox=boxdic)
        imgs.append([interlude])

#上演   
imgs=[]
interlude(imgs,comment1,50)
load_lines(imgs,lines1)
load_lines(imgs,lines2)
interlude(imgs,comment2,50)
load_lines(imgs,lines3)
load_lines(imgs,lines4)
interlude(imgs,comment3,50)

mov=ani.ArtistAnimation(fig, imgs, 100)
plt.show()
解説になっているのか?甚だギモンな動画
「高校数学のエアポケット」に戻る