かすまるは未来を語りたい

はこだて未来大学に通うかすまるが、数学や日々のことについて書きます。

魔王魂「シャイニングスター」を数式化してみた

この記事はFUN Advent Calendar 2023 の12月12日の枠に投稿したものです。他の方が投稿された記事も是非ご覧ください。

他の方の記事は以下のリンクからアクセスできます。

adventar.org

adventar.org

 

0. 目次

 

1. はじめに

1.1. 自己紹介と概要

皆様こんにちは。はじめましての方ははじめまして。

複雑系コース3年のかすまるです。

プロジェクト学習の成果発表会が終わったかと思ったら、グループ報告書、生協の仕事、院試に向けた勉強など重いタスクがまだまだ残っていました。自由の身となれるのはいつになるのでしょうか。

 

去年は積分と行列を使って、きのこの山よりもたけのこの里の方が優れていることを証明しました。

今年はもう少し高度な数学系ネタに挑戦してみようと思います。

去年の記事↓

kasumaru-math.hatenablog.com

 

皆様は「シャイニングスター」という楽曲をご存知でしょうか。

「シャイニングスター」とは、森田交一様が作詞作曲されたフリーBGMサイト「魔王魂」に掲載されているフリーBGMの一つです。

今では、YouTubeなど様々な場面で使用されている楽曲となっています。

youtu.be

 

そんな「シャイニングスター」などの楽曲は空気の振動、つまり波によって構成されています。

そして、これらの波は\( \sin \)や\( \cos \)を使って数式で表すことができます。

そこで今回は、「シャイニングスター」を数式にすることで、普段聞いている楽曲を別の形で見てみようと思います。

1.2. お詫び

今回のアドカレのテーマを決めるにあたって、X(旧Twitter)にてアンケートを行いました。

その結果、「YOASOBI『アイドル』を数式化してみた」というテーマが選ばれました。

しかし、数式化するにあたって楽曲の音源をダウンロードする必要がありましたが、著作権YouTube利用規約を侵さずにダウンロードする方法を見つけることができなかったため、楽曲をフリーBGMである「シャイニングスター」に勝手ながら変更しました。

「アイドル」の数式化を楽しみにしてくださった皆様、申し訳ありませんでした。

2. 数式化までの流れ

※わかりやすさを重視して説明するため、数学的に厳密ではない表現が含まれているかもしれません。ご了承ください。

スマートフォンでは数式が最後まで表示されない場合があります。PCなどの大きな画面で閲覧することを推奨します。

2.1. フーリエ変換と数式化

データから数式を推測する手法はいくつかありますが、今回は音楽などの信号処理の分野で一般的に使われているフーリエ変換を使います。

まず、フーリエ変換の基礎となるフーリエ級数展開について紹介します。

フーリエ級数展開は、未知の数式や扱うことが難しい形の周期的な数式を無理やり\( \sin \)と\( \cos \)の和で表す手法です。

例えば、周期が\( T \)である未知の数式\( f(t) \)にフーリエ級数展開を行うと、

\begin{align} a_k = \frac{2}{T} \int_{-\frac{T}{2}}^{\frac{T}{2}} f(t) \cos \left( \frac{2 \pi k t}{T} \right) dt \end{align}
\begin{align} b_k = \frac{2}{T} \int_{-\frac{T}{2}}^{\frac{T}{2}} f(t) \sin \left( \frac{2 \pi k t}{T} \right) dt \end{align}

と定義される係数\( a_k, b_k \)を用いて

\begin{align} f(t) = \frac{a_0}{2} + \sum_{k=1}^{\infty} a_k \cos \left( \frac{2 \pi k t}{T} \right) + b_k \sin \left( \frac{2 \pi k t}{T} \right) \end{align}

となります。

これらの式(1)~(3)がフーリエ級数展開の公式となります。

この式では\( a_k \)と\( b_k \)という2つの係数について計算することになり面倒なので、以下のようなオイラーの公式を用いて係数を1つにします。

\begin{align} e^{i \theta} = \cos \theta + i \sin \theta \end{align}

実際にオイラーの公式(4)を用いると、フーリエ級数展開の公式は

\begin{align} c_k = \frac{1}{T} \int_{-\frac{T}{2}}^{\frac{T}{2}} f(t) e^{-\frac{2 \pi i k t}{T}} dt \end{align}

と定義される係数\( c_k \)を用いて

\begin{align} f(t) = \sum_{k = -\infty}^{\infty} c_k e^{\frac{2 \pi i k t}{T}} \end{align}

と変形できます。

このように、フーリエ級数展開を使うことで、数式を\( \sin \)と\( \cos \)で表すことができます。

 

しかし、フーリエ級数展開は周期的な数式しか扱うことができません。

そこで、フーリエ級数展開の公式を周期的でない数式でも扱えるように変形していきます。

まず、周期的でない数式を周期が\( \infty \)の数式として扱います。

また、計算を簡単にするために\( T = 2 l \pi \)とおいて、フーリエ級数展開の公式を変形すると

\begin{align} c_k = \int_{-l \pi}^{l \pi} f(t) e^{-\frac{i k t}{l}} dt \end{align}
\begin{align} f(t) = \frac{1}{2 l \pi} \sum_{k = -\infty}^{\infty} c_k e^{\frac{i k t}{l}} \end{align}

となります。

式(7)について、\( \omega = n / l \)とおいて、\( l \rightarrow \infty \)の極限をとると、\( c_k \)は

\begin{align} F(\omega) = \int_{-\infty}^{\infty} f(t) e^{-i \omega t} dt \end{align}

という関数\( F(\omega) \)に変形できます。

このような変形をフーリエ変換と呼びます。

ここで、\( f(t) \)を音楽の波を表す式と考えると、

\begin{align} \omega = \frac{n}{l} = \frac{2 \pi n}{T} \end{align}

と表すことができます。

よって、\( \omega \)は\( n \)の値ごとに決定される\( f(t) \)の周波数と考えることができます。

このことから、音楽を分析するときにおいては、フーリエ変換は音楽の波を周波数ごとの成分に分解して並べたもの、つまり周波数のスペクトルに変換するという操作であると言えます。

 

また、区分求積法(総和の式\( \sum \)の極限をとると積分になる)を用いて式(8)を変形すると

\begin{align} f(t) = \frac{1}{2 \pi} \int_{-\infty}^{\infty} F(\omega) e^{i \omega t} d \omega \end{align}

となります。

このような関数\( F(\omega) \)から関数\( f(t) \)への変形をフーリエ変換と呼びます。

また、音楽を分析するときにおいては、逆フーリエ変換は周波数のスペクトルを元の音楽の波に戻す操作であると言えます。

 

以上のことを踏まえると、「シャイニングスター」の数式\( f_{\mathrm{out}}(t) \)は、元の「シャイニングスター」の波を\( f_{\mathrm{in}}(t) \)と置くと

\begin{align} F(\omega) = \int_{-\infty}^{\infty} f_{\mathrm{in}}(t) e^{-i \omega t} dt \end{align}
\begin{align} f_{\mathrm{out}}(t) = \frac{1}{2 \pi} \int_{-\infty}^{\infty} F(\omega) e^{i \omega t} d \omega \end{align}

という2つの数式で表すことができます。

2.2. 離散フーリエ変換と数式化

前の節では、音楽の波\( f_{\mathrm{in}}(t) \)が連続した値を取る(\( t \)がどんな値であっても\( f_{\mathrm{in}}(t) \)の値が存在する)という前提で話を進めました。

しかし、実際に得られる波のデータは飛び飛びの値、つまり離散的な値を取ります。

このような離散的な値でもフーリエ変換を行えるように、式を変形していきます。

 

ここでは、有限な音楽の波のデータを取ったとき、\( n \)番目のデータの値を\( f(n) \)とおきます。

式(5)の連続的な変数\(t, T \)を離散的な変数\(n, N \)と置き換えます。ただし、\( N \)は波のデータの総数です。すると、

\begin{align} c_k = \frac{1}{N} \sum_{n=0}^{N-1} f(n) e^{-\frac{2 \pi i k n}{N}} \end{align}

と変形できます。ここで、係数\( c_k \)を関数\( F(k) \)に置き換えると

\begin{align} F(k) = \frac{1}{N} \sum_{n=0}^{N-1} f(n) e^{-\frac{2 \pi i k n}{N}} \end{align}

となります。この\( F(k) \)は連続的な値のフーリエ変換における周波数のスペクトル\( F(\omega) \)に相当します。

このような離散的な波のデータをスペクトルに変換する操作を離散フーリエ変換と呼びます。

 

また、式(6)の連続的な変数\(t, T \)を離散的な変数\(n, N \)に、係数\( c_k \)を関数\( F(k) \)と置き換えると、

\begin{align} f(t) = \sum_{k = 0}^{N-1} F(k) e^{\frac{2 \pi i k n}{N}} \end{align}

となります。

このような離散的なスペクトルを波のデータに変換する操作を逆離散フーリエ変換と呼びます。

式(15)と式(16)を変形すると、離散フーリエ変換と逆離散フーリエ変換の式は以下のように表すことができます。

\begin{align} F(k) = \sum_{n=0}^{N-1} f(n) e^{-\frac{2 \pi i k n}{N}} \end{align}
\begin{align} f(t) = \frac{1}{N} \sum_{k = 0}^{N-1} F(k) e^{\frac{2 \pi i k n}{N}} \end{align}

 

以上のことから、「シャイニングスター」の数式\( f_{\mathrm{out}}(n) \)は、元の「シャイニングスター」の波のデータを\( f_{\mathrm{in}}(n) \)と置くと

\begin{align} F(k) = \sum_{n=0}^{N-1} f_{\mathrm{in}}(n) e^{-\frac{2 \pi i k n}{N}} \end{align}
\begin{align} f_{\mathrm{out}}(n) = \frac{1}{N} \sum_{k = 0}^{N-1} F(k) e^{\frac{2 \pi i k n}{N}} \end{align}

という2つの数式で表すことができます。

3. プログラムによる検証

3.1. 音声データの入手

それでは、実際にこれらの数式に「シャイニングスター」のデータを代入して、数式\( f_{\mathrm{out}}(n) \)を作成していきます。

今回は1番のサビの部分(56.5秒~1分27.5秒)のみを数式化します。

最初に、数式化に必要なデータを入手します。

まず、公式サイトから「シャイニングスター」の音源をダウンロードします。

maou.audio

次に、ダウンロードした音源をAudacityという音楽編集ソフトに取り込みます。

Audacityの公式サイト↓

www.audacityteam.org

取り込んだ音源を左耳から聞こえる音と右耳から聞こえる音に分けて、それぞれの時刻ごとの音量をtxtファイルに出力します。

このとき、サンプリング定数は44100Hzとします。

これは、音量を1秒間に44100回txtファイルに出力することを意味します。

2dgames.jp

この操作によって入手できるデータは大きすぎるため、Pythonを用いてデータを0.01秒単位のデータに圧縮します。

以下のプログラムは、今回使用するモジュールのインポートとデータの取り込み、圧縮を行うプログラムです。

# %%
#ライブラリのインポート
import numpy as np
import matplotlib.pyplot as plt
import os
#各自音楽データを入れたファイルのパスを入力
os.chdir("***")

# %%
#データパスの読み込み
#1番サビ部分:00:56:500~01:27:500
path1l = 'source1l.txt' #Audacityによって出力されたtxtファイル
path1r = 'source1r.txt'
path2l = 'source2l.txt'
path2r = 'source2r.txt'

# %%
#圧縮した音声データを入れるリストの作成
left = []
right = []

# %%
#音声データを圧縮する関数
RANGE = 0.01 # 0.01秒単位の平均を求める
def compress(f1, f2, data):
    fprev = 0
    for f in [f1, f2]:
        list = []
        prev = 0
        for line in f.read().split("\n"):
            line = line.strip()
            if line == "":
                break
            time, dB = line.split("\t")
            time = float(time)
            try:
                dB = float(dB)
            except ValueError:
                dB = 0 # -ooなので無音
            
            if time > prev + RANGE:
                data.append(np.mean(list))
                list = []
                prev += RANGE
                fprev += RANGE
            else:
                list.append(dB)
            #print(line)

# %%
#音声データの圧縮
compress(open(path1l), open(path2l), left)
compress(open(path1r), open(path2r), right)
sizel = len(left)
sizer = len(right)

# %%
#圧縮したデータのプロット
t = np.arange(0, sizel*RANGE, RANGE)
plt.plot(t, left, label="left")
plt.plot(t, right, label="right")
plt.xlabel("time[s]")
plt.ylabel("wave")
plt.legend()

圧縮されたデータの波形は以下の図1のようになります。

ただし、「left」が左耳から聞こえる音の波形、「right」が右耳から聞こえる音の波形を表しています。

図1: 圧縮されたデータの波形

このようにして、「シャイニングスター」の音源から波のデータを入手することができました。

3.2. データのフーリエ変換

入手したデータをもとに、実際に離散フーリエ変換を実行していきます。

2章で説明した式(19)の計算です。

Pythonでは、numpyというモジュールに含まれるfft関数によって離散フーリエ変換を行うことができます。

(正確には、fft関数は離散フーリエ変換をより高速に行うための計算方法である高速フーリエ変換を行う関数です。)

以下のプログラムは、fft関数を用いてデータに離散フーリエ変換を行い、その結果得られた周波数のスペクトルを表示するプログラムです。

# %%
#離散フーリエ変換の実施
spl = np.fft.fft(left)
spr = np.fft.fft(right)
freq = np.fft.fftfreq(sizel, d=RANGE)
ampl = abs(spl/(sizel/2))
ampr = abs(spr/(sizer/2))

# %%
#スペクトルのプロット
plt.plot(freq[1 : int(sizel/2)], ampl[1 : int(sizel/2)], label="left")
plt.plot(freq[1 : int(sizer/2)], ampr[1 : int(sizer/2)], label="right")
plt.xlabel("frequency[Hz]")
plt.ylabel("Amplitude")
plt.xscale("log")
plt.legend()

\( \mathrm{freq} \)は、離散フーリエ変換によって生まれた関数\( F(k) \)に紐づいた周波数の配列です。

\( \mathrm{ampl}, \mathrm{ampr} \)は、左耳、右耳から聞こえる音に関する周波数ごとの音量を格納した配列です。

具体的な計算方法は以下のサイトをご覧ください。

qiita.com

そして、以下の図2は、実際に表示された「シャイニングスター」の周波数ごとのスペクトルです。

図2: 周波数ごとのスペクトル

横軸は周波数の対数軸、縦軸は周波数ごとの音量です。

これによって、数式化に必要な式(19)の計算をして、関数\( F(k) \)を求めることができました。

3.3. スペクトルの逆フーリエ変換

得られたスペクトルに逆離散フーリエ変換を行います。

2章で説明した式(20)の計算です。

Pythonでは、numpyのifft関数によって逆離散フーリエ変換を行います。

以下のプログラムは、実際にスペクトルに対して逆離散フーリエ変換を行って、その結果をグラフに表示させるプログラムです。

# %%
#逆離散フーリエ変換の実施
xl = np.fft.ifft(spl)
xr = np.fft.ifft(spr)

# %%
#変換後のデータのプロット
plt.plot(t, xl.real, label="left")
plt.plot(t, xr.real, label="right")
plt.xlabel("time[s]")
plt.ylabel("wave")
plt.legend()

このプログラムによって、式(20)の\( f_{\mathrm{out}} (n) \)、つまり「シャイニングスター」の数式を得ることができます。

そして、図3は、\( f_{\mathrm{out}} (n) \)をグラフに表した図です。

図3: 数式化した音楽のグラフ化

元のデータの値をグラフ化した図1と数式化した関数\( f_{\mathrm{out}} (n) \)の値をグラフ化した図3を比較すると、ほとんど同じグラフを作成できていることがわかります。

よって、作成した数式が概ね正しいことを確かめることができました。

4. まとめ

4.1. 記事全体のまとめ

今回は、魔王魂さんの「シャイニングスター」を数式化する手法について書いてみました。

難しいところもあったかと思いますが、楽しんでもらえたら幸いです。

来年は時間があるかわかりませんが、もし機会があればまたアドカレの記事作成に挑戦してみたいと思います。

それでは、最後までご覧いただきありがとうございました。

4.2. 12日前後の記事

11日Part1 こたさん 「私と、アートと、それからAI」

note.com

(去年は僕の記事への感想ありがとうございました。こたさんはきのこ派でしたか。「先」で待ってますね。)

 

11日Part2 とみすけさん 「はこだて未来大学に合格した話(他、入りたいサークルの話など)」

tomisuke.com

(未来大への合格おめでとうございます。キーボード配列自作は強すぎますね。入学後が楽しみです。)

 

12日Part1 当記事

 

12日Part2 kazu8823さん 「神ゲー紹介(ガチな方)」

kazu8823.hatenablog.jp

(最近Steamに全く触れていませんでしたが、神ゲーを探しに漁ってみるのも面白そうですね。)

 

13日Part1 パン屋さん。さん 「高専プロコンで行った手探りチーム開発のお話」

(すでにチーム開発の経験が...。アドカレに参加している新入生のレベル高すぎませんか?)

 

13日Part2 ろくさん 「留学準備についてか一問一答、part1と統合可能性あり」

(留学も一度は行ってみたいですね。一番の不安要素は海外の食事が口に合うかどうかです。)

 

4.3. 参考にしたサイト

manabitimes.jp

manabitimes.jp

manabitimes.jp

www.momoyama-usagi.com

qiita.com

2dgames.jp

たけのこ派で複雑系コース所属の大学2年生が数学の力できのこ派をボコボコにした話

この記事はFUN Part3 Advent Calendar 2022 の12月16日の枠に投稿したものです。他の方が投稿された記事も是非ご覧ください。

他の方の記事は以下のリンクからアクセスできます。

adventar.org

adventar.org

adventar.org

 

0. 目次

1. はじめに

みなさんこんにちは。初めましての方は初めまして。

複雑系コース2年のかすまるです。

最近は課題を徹夜で終わらせて、翌日の授業に寝坊することが日課というなかなか悲惨な大学生活を送っています。誰か助けてください。

 

さて、本題に入りましょう。

みなさんはきのこの山たけのこの里、どちらがお好きでしょうか?

このような「きのこの山たけのこの里ではどちらが美味しいか」という論争はしばしば話題に上がります。

ですが、個人的にはこの論争は話題にするだけ無駄なことではないかと考えています。

なぜかって?

たけのこの里の方が美味しいに決まっているからです。

 

しかし、世の中にはな ぜ かきのこの山の方が美味しいと主張する、いわゆる「きのこ派」と呼ばれる方がいます。

彼らはありとあらゆる手段を用いて、たけのこの里を愛する「たけのこ派」を迫害してきました。

例えば、2022年6月に購買で開催された「きのこたけのこ戦争」という企画でたけのこ派を迫害しました。

この企画は、きのこの山たけのこの里をそれぞれ300個ずつ入荷して、どちらが先に売り切れるかを競う企画でした。

この企画の中で、とあるきのこ派の方がきのこの山を勝たせるために、きのこの山を100個以上買い占めるという暴挙に出ました。

その結果、たけのこの里は敗北して、9月末まで購買に入荷されなくなってしまいました。

僕はいまだにあの勝利を認めていません。

(詳しくはぽてみなこさんの以下の記事をご覧ください)

note.com

 

このような迫害を我々たけのこ派は許して良いのでしょうか。

いえ、決して許されることではありません。

ということで、今回は数学の力を使って、我々を迫害するきのこ派をボコボコにしてやろうと思います。

この記事を読んだきのこ派は過去の過ちを認め、謝罪せざるを得ないでしょう。

ついでに数学に対する苦手意識が少しでも減らせれば幸いです。

 

2. 「美味しさ」の定義

そもそも「美味しさ」とは何でしょうか。

デジタル大辞泉(2022)によると、「美味しい」とは「食べ物の味がよい。美味だ。『うまい』に比べて丁寧・上品な感じが強い。」という意味だそうです。

www.weblio.jp

 

いまいちピンときませんね。

なので、もう少し対象を絞って調べてみます。

 

具体的には、きのこ派たけのこ派はそれぞれどのような部分に美味しさを感じているのかを調べました。

明治(2020)が行った「きのこの山 たけのこの里 2020 国民大調査」によると、きのこの山たけのこの里それぞれの最も好きな部分を選んでくださいという質問に、きのこ派きのこの山のチョコとクラッカーの調和、たけのこ派たけのこの里のチョコとクッキーの調和と回答していました。

www.meiji.co.jp

 

つまり、きのこの山たけのこの里はどちらもチョコとそれ以外の部分が調和することで美味しくなっていると言えます。

このことから、チョコとクラッカー、またはチョコとクッキーの比率を求めて比較することが打倒きのこ派のカギになると推測できます。

次の章では、体積、質量、栄養素という3つの観点からチョコとクラッカー、チョコとクッキーの比率をそれぞれ求めていきます。

 

3. きのこ・たけのこを数学的に解析

今回の解析のために、きのこの山たけのこの里を1箱ずつ購入しました。

図1 きのこの山たけのこの里(打倒きのこ)

3.1. 体積比

まずは、体積比から求めていきましょう。

立体の体積は様々な方法で求められますが、今回は積分を用いて体積を求めていきます。

具体的には、きのこの山たけのこの里をある曲線と直線で囲われた部分の回転体( x軸の周りで1回転させてできる立体)とみなします。

このような回転体は、曲線や直線の式を積分することで堆積を求められます。

 

 

また、曲線と直線を構成するために計測したデータは以下の通りです。

  • きのこの山
    •  chx_k:チョコレート部分の先端から底面までの距離
    •  chy_k:チョコレート底面の半径
    •  crx_k:クラッカーの長さ
    •  cry_k:クラッカーの半径
    •  ax_k:全体の長さ
  • たけのこの里
    •  chx_t:チョコレート部分の両端の距離
    •  chy_t:チョコレート終端部分の半径
    •  cox_t:クッキーの長さ
    •  coy_t:クッキーの半径
    •  ax_t:全体の長さ

これらの値を実物に当てはめると図2のようになります。

図2 それぞれの変数が示す長さ

今回は箱の中からきのこの山たけのこの里をそれぞれ5個ずつ無作為に取り出して、データを計測しました。

計測した5個のデータの平均を取ると、各データは

\begin{eqnarray*} chx_k=1.24, chy_k=0.88, crx _k=2.80, cry_k=0.42, ax_k=3.02 \qquad (1)\end{eqnarray*}
\begin{eqnarray*} chx_t=1.78, chy_t=0.74, cox_t=1.54, coy_t=0.74, ax_t=2.34 \qquad (2)\end{eqnarray*}

※単位はすべて \mathrm{cm}

となりました。

また、体積を求めやすくするため、きのこの山たけのこの里の輪郭をそれぞれ以下の関数として扱うこととします。

  • きのこの山
    • チョコレート
      • \begin{eqnarray*} \displaystyle \begin{cases}y=\sqrt{\dfrac{chy_k^{2}}{chx_k}x}   \qquad (0\leq x\leq chx_k) \qquad (3)\\ x=chx_k \qquad(0\leq y\leq chy_k) \qquad (4)\end{cases} \end{eqnarray*}
    • クラッカー
      • \begin{eqnarray*} \displaystyle \begin{cases}y=\sqrt{cry_k^{2}-\left\{ x-\left( ax_k-crx_k+cry_k\right) \right\} ^{2}} \qquad (ax_k - crx_k \leq x \leq ax_k - crx_k + cry_k) \qquad (5)\\ y=cry_k \qquad (ax_k - crx_k + cry_k \leq x \leq ax_k -cry_k) \qquad (6)\\ y=\sqrt{cry_k^{2}-\left\{ x-\left( ax_k-cry_k\right) \right\} ^{2}} \qquad (ax_k - cry_k \leq x \leq ax_k) \qquad (7)\end{cases} \end{eqnarray*}
  • たけのこの里
    • チョコレート
      • \begin{eqnarray*} \displaystyle \begin{cases}y=\sqrt{\dfrac{chy_t^{2}}{chx_t}x}   \qquad (0\leq x\leq chx_t) \qquad (8)\\ x=chx_t \qquad(0\leq y\leq chy_t) \qquad (9)\end{cases} \end{eqnarray*}
    • クッキー
      • \begin{eqnarray*} \displaystyle \begin{cases}y=\sqrt{\dfrac{coy_t^{2}}{cox_t}\{ x - (ax_t - cox_t)\} }   \qquad (ax_t - cox_t\leq x\leq ax_t) \qquad (10)\\ x=ax_k \qquad(0\leq y\leq coy_k) \qquad (11)\end{cases} \end{eqnarray*}

これらの式を図示すると、図3、図4のようになります。

図3 きのこの山の断面を式として図示したグラフ

図4 たけのこの里の断面を式として図示したグラフ

(こうして見るとたけのこの里は思ったよりチョコ部分が多いですね。)

 

これらの曲線・直線を x軸周りで一回転させた回転体の体積を求めていきましょう。

関数 y=f(x) aから bまでの範囲内における回転体の体積は、以下の式で求められます。

\begin{eqnarray*} \displaystyle \pi \int_{a}^{b} \{f(x)\}^2 dx \qquad (12)\end{eqnarray*}

この式をきのこの山たけのこの里を構成する曲線と直線に当てはめていきます。

ここで、式(3)から式(11)をよく見ると、これらの式は次の4パターンに分類することができます。

\begin{eqnarray*} y = \sqrt{a(x-b)}\qquad (13)\end{eqnarray*}
\begin{eqnarray*} y = \sqrt{a^2 - (x-b)^2} \qquad (14)\end{eqnarray*}
\begin{eqnarray*} y = c \qquad (15)\end{eqnarray*}
\begin{eqnarray*} x = c \qquad (16)\end{eqnarray*}

この中で体積を求めるために必要な式は式(13)から(15)なので、これらの式を式(12)に当てはめていきます。

範囲 p \leq x \leq qにおける回転体の体積は

式(13)より

\begin{align} \displaystyle &V_{s}\left( a,b,p,q\right) \\ &=\pi \int ^{q}_{p}\left\{ \sqrt{a\left( x-b\right) }\right\} ^{2}dx \qquad (17) \\ &=\pi \int ^{q}_{p}a\left( x-b\right) dx \qquad (18) \\ &=\pi a\int _{p}^{q}\left( x-b\right) dx \qquad (19) \\ &=\pi a\left[ \dfrac{1}{2}x^{2}-bx\right] _{p}^{q}  \qquad (20) \\ &=\pi a\left\{ \left( \dfrac{1}{2}q^{2}-bq\right) -\left( \dfrac{1}{2}p^{2}-bp\right) \right\} \qquad (21)\end{align}

式(14)より

\begin{align} \displaystyle &V_{c}\left( a,b,p,q\right) \qquad (22) \\ &=\pi \int ^{q}_{p}\left\{ \sqrt{a^{2}-\left( x-b\right) ^{2}}\right\}^2 dx \qquad (23) \\ &=\pi \int _{p}^{q}\left\{ a^{2}-\left( x-b\right) ^{2}\right\} dx \qquad (24) \\ &=\pi \left[ a^{2}x-\dfrac{1}{2}\left( x-b\right) ^{2}\right] _{p}^{q} \qquad (25) \\ &=\pi \left\{ a^{2}q-\dfrac{1}{2}\left( q-b\right) ^{2}-a^{2}p+\dfrac{1}{2}\left( p-b\right) ^{2}\right\} \qquad (26) \end{align}

式(15)より

\begin{align} \displaystyle &V_{l} (c, p, q) \qquad (27) \\ &=\pi \int ^{q}_{p}c^2dx \qquad (28) \\ &=\pi c^2\int _{p}^{q}dx \qquad (29) \\ &=\pi c^{2}\left[ x\right] _{p}^{q} \qquad (30) \\ &=\pi c^{2}\left( q-p\right) \qquad (31) \end{align}

となります。

したがって、それぞれの式に式(1)~(11)の変数や値を代入すると、きのこの山たけのこの里のそれぞれの部分の体積は

  • きのこの山
    • チョコレート部分の体積 V_{chk}
      • \begin{align} \displaystyle &V_{chk} = V_s(\frac{chy_k^2}{chx_k}, 0, 0, chx_k)-V_c(cry_k, ax_k-crx_k+cry_k, ax_k-crx_k, ax_k-crx_k+cry_k)-V_l(cry_k, ax_k-crx_k+cry_k, chx_k) \qquad (32) \\ &\simeq V_s(0.62,0,0,1.24) -V_c(0.42, 0.64, 0.22, 0.64) - V_l(0.42, 0.64, 1.24) \qquad (33) \\ &\simeq 0.67 \end{align}
    • クラッカー部分の体積 V_{crk}
      •  V_{crk} = V_c(cry_k, ax_k-crx_k+cry_k, ax_k-crx_k, ax_k-crx_k+cry_k)+V_l(cry_k, ax_k-crx_k+cry_k, ax_k-cry_k)+V_c(cry_k, ax_k-cry_k, ax_k-cry_k, ax_k) \qquad (34) \\ =V_c(0.42, 0.64, 0.22, 0.64)+V_l(0.42, 0.64, 2.60)+V_c(0.42, 2.60, 2.60, 3.02) \qquad (35) \\ \simeq 1.55
  • たけのこの里
    • チョコレート部分の体積 V_{cht}
      • \begin{align} &V_{cht} = V_s(\frac{chy_t^2}{chx_t}, 0, 0, chx_t)-V_s(\frac{coy_t^2}{cox_t}, ax_t-cox_t, ax_t-cos_t, chx_t) \qquad (36) \\ &\simeq V_s(0.31,0,0,1.78)-V_s(0.36, 0.80, 0.80, 1.78) \qquad (37) \\ &\simeq 0.99 \end{align}
    • クッキー部分の体積 V_{cot}
      • \begin{align} &V_{cot} =  V_s(\frac{coy_t^2}{cox_t}, ax_t-cox_t, ax_t-cox_t, ax_t) \qquad (38) \\ &\simeq V_s(0.36, 0.80, 0.80, 2.34) \qquad (39) \\ &\simeq 1.32\end{align}

※単位はすべて \mathrm{cm^3}

 V_{crk}の式のみはてなブログの仕様によるバグが発生したため左揃えになっています。

ここから、チョコレート部分とクラッカー部分、チョコレート部分とクッキー部分の体積比をそれぞれ求めると

 V_{chk} : V_{crk} = 30.0 : 70.0 \qquad (40)
 V_{cht} : V_{cot} = 42.9 : 57.1 \qquad (41)
※ここでもバグにより左揃えです

となりました。図5は、それぞれの体積比を円グラフに表した図です。

図5 チョコレートとクラッカー、クッキーの体積比

図5からわかることは、チョコの体積が小さいように見えるたけのこの里は、実はきのこの山よりも体積が大きいということです。

いつも「たけのこはチョコが薄い!www」とバカにしているきのこ派の皆さん、今どんな気持ちですか。ねえねえ。

とはいえ、これだけではたけのこの里きのこの山よりも優れている確実な理由にはならないでしょう。

「チョコの多さ=美味しさ」ではありませんからね。

そのため、チョコレート部分とクラッカー部分、クッキー部分の質量比でも同様に比較していきましょう。

 

3.2. 質量比

今回質量比を求める上で、計算を簡単にするために定めた条件は以下のとおりです。

  • チョコレート部分、クラッカー部分、クッキー部分の密度はすべて一様(一部の点に偏っていない)とする。
  • きのこの山たけのこの里のチョコレート部分では全て「明治ミルクチョコレート」(図6)と同じチョコが使われているとする。
    • 本来きのこの山たけのこの里のチョコレート部分は「カカオが香るチョコレート」と「ミルクチョコ」の2つのチョコで構成されている。
  • 体積の値は先ほど求めた V_{chk} V_{crk} V_{cht} V_{cot}の値をそのまま使用する。

図6 明治ミルクチョコレート

それでは実際に質量比を求めていきましょう。

まず、明治ミルクチョコレート(以下ミルクチョコ)の各辺の長さを求めると、体積 V_{ch}

\begin{eqnarray*} V_{ch} = 14.3\times 6.3 \times 0.4 = 36.036\mathrm{cm^3} \qquad (42)\end{eqnarray*}

※厚さは低い部分が0.3cm、高い部分が0.6cmでしたので、平均した厚さを0.4cmと推定しました。

となりました。

また、ミルコチョコのパッケージ裏によると、ミルクチョコ1枚の質量は50.0gでした。よって、ミルクチョコの密度 D_{ch}

\begin{eqnarray*} D_{ch} = \frac{50.0}{36.036} \simeq 0.72\mathrm{g/cm^3} \qquad (43)\end{eqnarray*}

となりました。

これをきのこの山とたけのこの山のチョコレート部分に当てはめると、きのこの山たけのこの里のチョコレート部分の質量 M_{chk} M_{crk}

\begin{eqnarray*} M_{chk} = D_{ch} V_{chk} \simeq 0.48 \mathrm{g} \qquad (44)\end{eqnarray*}
\begin{eqnarray*} M_{cht} = D_{ch} V_{cht} \simeq 0.72 \mathrm{g} \qquad (45)\end{eqnarray*}

となりました。

 

また、図1のきのこの山たけのこの里はどちらも30個入りであり、内容量(30個の質量の合計)はそれぞれ74g、70gでした。

よくきのこ派はこの表記だけを見て「たけのこは量が少ない!ボッタクリだ!」などと主張しますが、物質が持つ量は質量だけではありません。

しかも重いと持ちづらいという欠点もあります。

きのこ派の皆さんはパッケージに書かれている数値だけで判断する癖を直したほうがいいと思いますよ。

本題に戻ります。

これらの内容量から、きのこの山1個の質量 M_{k}たけのこの里1個の質量 M_{t}

\begin{eqnarray*} M_k \simeq 2.47 \mathrm{g}, M_t \simeq 2.33 \mathrm{g} \qquad (46)\end{eqnarray*}

でした。

よって、きのこの山のクラッカー部分の質量 M_{crk}たけのこの里のクッキー部分の質量 M_{cot}

 M_{crk} = M_k - M_{chk} \simeq 1.99 \qquad (47)
 M_{cot} = M_t - M_{cht} \simeq 1.62 \qquad (48)

となりました。したがって、質量比は

 M_{chk} : M_{crk} = 19.5 : 80.5 \qquad (49)
 M_{cht} : M_{cot} = 30.7 : 69.3 \qquad (50)
※バグにより左揃え

となりました。図7は、それぞれの質量比を円グラフに表した図です。

図7 チョコレートとクラッカー、クッキーの質量比

図7から、質量という観点から見てもたけのこの里の方がチョコレートの量が多いことがわかります。

さらに、クラッカー、クッキーの密度 D_{crk} D_{cot}を求めると

 \displaystyle D_{crk} = \frac{M_{crk}}{V_{crk}} \simeq 1.28 \mathrm{g/cm^3} \qquad (51)
 \displaystyle D_{cot} = \frac{M_{cot}}{V_{cot}} \simeq 1.22 \mathrm{g/cm^3} \qquad (52)

※バグにより以下略

となります。

たけのこの里のクッキーはきのこの山のクラッカーよりも密度が低いです。

この密度の低さが、クッキーのサクッとした食感につながっていると考えられます。

また、多くの焼き菓子においては、食感が硬すぎずやわらかすぎない、いわゆるサクッとした食感が好ましいとされています。

つまり、サクッと食感は正義ということです。

以上のことから、質量に関してもたけのこの里の方が優れていることが証明されました。

 

3.3. エネルギー比と栄養比

最後に、エネルギーと栄養という観点から比較していきましょう。

表1は、ミルクチョコ、きのこの山たけのこの里に書かれている栄養素とその質量をまとめたものです。

表1 1箱に含まれるエネルギーと栄養素の量

  ミルクチョコ きのこの山 たけのこの里
エネルギー[kcal] 283 423 383
タンパク質[g] 3.8 6.3 5.5
脂質[g] 18.4 26.7 22.8
炭水化物[g] 26.7 39.4 38.9
食塩相当量[g] 0.065 0.3 0.4

ここから、エネルギーとそれぞれの栄養素についてチョコレートとそれ以外の部分の比率を計算していきます。

ただ、計算自体は質量比の場合と同じですが、これらを1つ1つ計算するのは面倒ですよね。

ここで役立つ数学の道具が行列です。

行列とは、いくつかの値を縦横に並べたものです。

たとえば、次のようなものが行列です。

\begin{eqnarray*} \begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{pmatrix} \qquad (53)\end{eqnarray*}

このような行列同士を計算することで、複数の値を一気に計算することができます。

 

実際に行列を使って、カロリー比と栄養比を求めていきましょう。

ミルクチョコのエネルギーと栄養素の量をまとめた行列を N_{ch}とします。

\begin{eqnarray*} N_{ch} = \begin{pmatrix} 283 & 3.8 & 18.4 & 26.5 & 0.065 \end{pmatrix} \qquad (54)\end{eqnarray*}
 N_{ch}に入っている値は、左から順番にエネルギー、タンパク質、脂質、炭水化物、食塩相当量です。単位はエネルギーのみkcal、残りはすべてgです。

ミルクチョコ1 \mathrm{cm^3}あたりのエネルギーと栄養素の量 DN_{ch}

\begin{align} &DN_{ch} = \frac{1}{36.036} \begin{pmatrix} 283 & 3.8 & 18.4 & 26.5 & 0.065 \end{pmatrix} \qquad (55) \\ &\simeq \begin{pmatrix} 7.85 & 0.11 & 0.51 & 0.74 & 0.0018 \end{pmatrix} \qquad (56)\end{align}

となります。これに次のような行列 V_{cha}を左からかけることで、きのこの山たけのこの里のチョコ部分に含まれるエネルギーと栄養素の量を求められます。

\begin{eqnarray*} V_{cha} = \begin{pmatrix} V_{chk} \\ V_{cht} \end{pmatrix} \simeq \begin{pmatrix} 0.67 \\ 0.99 \end{pmatrix} \qquad (57)\end{eqnarray*}

行列の積について、詳しくは以下の動画をご覧ください。

www.youtube.com

(ヨビノリさんはさまざまな数学に関する解説動画を上げておられるので、新入生の方は予習として見ておくことをおすすめします。1年生の前期に学ぶ内容は「解析学」と「線形代数」です。)

話を戻して、行列 V_{cha} DN_{ch}の積 N_{chkt}

\begin{align} &N_{chkt} = V_{cha} DN_{ch} \qquad (58) \\ &\simeq \begin{pmatrix} 0.67 \\ 0.99 \end{pmatrix} \times \begin{pmatrix} 7.85 & 0.11 & 0.51 & 0.74 & 0.0018 \end{pmatrix} \qquad (59) \\ & \simeq \begin{pmatrix} 5.27 & 0.07 & 0.34 & 0.49 & 0.0012 \\ 7.81 & 0.10 & 0.51 & 0.73 & 0.0018 \end{pmatrix} \qquad (60) \end{align}

となりました。この行列の1行目がきのこの山1個のチョコ部分に含まれるエネルギーと栄養素の量、2行目がたけのこの里1個のチョコ部分に含まれる同様の量です。

 

また、きのこの山1個とたけのこの里1個に含まれるエネルギーと栄養素の量を入力した行列 N_{kt}

\begin{eqnarray*} N_{kt} = \frac{1}{30} \times \begin{pmatrix} 423 & 6.3 & 26.7 & 39.4 & 0.3 \\ 383 & 5.5 & 22.8 & 28.9 & 0.4 \end{pmatrix} \simeq \begin{pmatrix} 14.10 & 0.21 & 0.89 & 1.31 & 0.010 \\ 12.77 & 0.18 & 0.76 & 0.96 & 0.013 \end{pmatrix} \qquad (61)\end{eqnarray*}

です。よって、クラッカー部分、クッキー部分に含まれる1個あたりのエネルギーと栄養素の量 N_{crco}

\begin{align} &N_{crco} = N_{kt} - N_{chkt} \qquad (62) \\ &\simeq \begin{pmatrix} 14.10 & 0.21 & 0.89 & 1.31 & 0.010 \\ 12.77 & 0.18 & 0.76 & 0.96 & 0.013 \end{pmatrix} - \begin{pmatrix} 5.27 & 0.07 & 0.34 & 0.49 & 0.0012 \\ 7.81 & 0.10 & 0.51 & 0.73 & 0.0088 \end{pmatrix} \qquad (63) \\ &\simeq \begin{pmatrix} 8.87 & 0.14 & 0.55 & 0.82 & 0.0088 \\ 4.96 & 0.88 & 0.25 & 0.23 & 0.012 \end{pmatrix} \qquad (64) \end{align}

となりました。1行目がきのこの山のクラッカー部分、2行目がたけのこの里のクッキー部分に含まれるエネルギーと栄養素の量です。

 

質量比の場合と同様に計算すると、チョコレート部分とクラッカー部分、チョコレート部分とクッキー部分に含まれるエネルギーの比率は図8のようになります。

図8 チョコレートとクラッカー、クッキーのエネルギー比



また、それぞれに含まれる栄養素についての比率は図9のとおりです。"Protein"=タンパク質、"Lipid"=脂質、"Carbohydrate"=炭水化物、"Salt"=食塩です。

図9 チョコレートとクラッカー、クッキーの各栄養素に関する比



このことから、たけのこの里きのこの山と比べてチョコレートが持つ成分を多く接種することができるとわかります。

チョコの成分を多く含むということは、それだけチョコの味を強く感じられるということです。

また、クラッカーやクッキーは食感を楽しむものであり、味を主に楽しむものではありません。

そのため、きのこの山のようにクラッカーが占める割合が大きいと、チョコ本来の甘味や心地よい苦味が失われると考えられます。

よって、たけのこの里はチョコの味とクッキーの食感のバランスがきのこの山よりも良く、より美味しいものであると言えます。

それに加えて、1個あたりのエネルギーもきのこの山が約14.10kcal、たけのこの里が約12.77kcalとたけのこの里の方が少ないです。

そのため、たけのこの里はダイエット中に食べても罪悪感やリバウンドの危険性がきのこの山よりも少ないと推測されます。

これはもうきのこの山を選ぶ理由はありませんね。

 

4. まとめ

4.1. 記事全体のまとめ

ここまできのこの山たけのこの里について数学的に比較してきましたが、いかがでしたでしょうか。

結論としては、たけのこの里の圧勝と言っていいでしょう。

これまでたけのこの里を迫害してきたきのこ派の皆さんも、たけのこ派に乗り換えたくなったのではないでしょうか。

いえ、むしろ今すぐ乗り換えるべきです。

 

また、今回は比較する際に積分と行列という、1年で学習する数学を用いました。

この記事を読んだことで、数学は決して問題を解くためだけに存在するものではないということがわかっていただけたら幸いです。

新入生のみなさんは、これを期に大学数学の勉強を始めてみてはいかがでしょうか。

 

最後までご覧いただきありがとうございました。

 

4.2. 17日の記事

Part 1: kazu8823さん「ゲームの話しようかなと思っていたんですが間に合いませんでした」

kazu8823.hatenablog.jp

Part 2: fewlessさん「ストリートビューでロシアを旅しよっか^^」

note.com

Part 3: かげろんさん「お前もTCGをやれ。見るだけでもいいから」

note.com