Memorandums?

This blog is written about technical-discovery and daily-event.

「MLP深層学習」の誤植?

はじめに

お久しぶりです!
あまり更新しなくてすみません。

専門書の解説を書こうかな〜とか思ってはいたのですが、毎回ノートにまとめたら満足してしまってました(^_^;)

さて、今回は、MLPの深層学習本を読んでいて、疑問に思った点・誤植と思われる点をまとめていきたいと思います。

合っていても間違っていても、
「それは確かに間違っている!」とか「それは〜だから合ってるわ、何言ってんじゃボケ〜」
などと教えていただけたら幸いです!

まずは、本の紹介。

深層学習 (機械学習プロフェッショナルシリーズ)

深層学習 (機械学習プロフェッショナルシリーズ)

第7刷です。
ちなみに第1刷・第2刷の誤植情報は、
http://www.kspub.co.jp/download/1529021a.pdf
に掲載されています。

それでは、いきます。

[5/9]1つ誤植を追加しました。

p37(3.3)とその次の式

元の式:
{\displaystyle
\textbf{w}^{(t+1)}=\textbf{w}^{(t)}-\epsilon\Delta E_t + \mu \Delta \textbf{w}^{(t-1)}
}

Momentumは、過去の重みの修正量を今回の重みの修正量に反映させる方法です。
更新後の重みベクトルを \textbf{w}^{(t+1)}とするならば、
1つ前の重みベクトルは、 \textbf{w}^{(t)}のはずです。
ですので、

{\displaystyle
\textbf{w}^{(t+1)}=\textbf{w}^{(t)}-\epsilon\Delta E_t + \mu \Delta \textbf{w}^{(t)}
}
となると思います。
また、その次のページの式(3.3)の書き換えは、

元の式:

{\displaystyle
\Delta\textbf{w}^{(t)} = \mu \Delta \textbf{w}^{(t-1)}-\epsilon\Delta E_t
}

となっていますが、 \Delta\textbf{w}^{(t-1)}\equiv \textbf{w}^{(t-1)}-\textbf{w}^{(t-2)}
の定義にしたがって、先ほどの式を変形すれば、

{\displaystyle
\Delta\textbf{w}^{(t+1)}=\mu \Delta \textbf{w}^{(t)} - \epsilon \Delta E_t
}
となるはずです。


p42(4.1)の前の文中の式

これは小さな誤植と思われます。

文中抜粋:

{\displaystyle
バイアスb_jをそのユニットと各ユニットjとの結合の重みw_{0j}^{(l)}=b_j^{(l)}と考えることとします。
}

(l-1)層目からl層目への重み行列は、行方向にl層目のユニット、列方向に(l-1)層目のユニットが並びます。
これは、l層目への総入力は、(l-1)層目のユニットの総和で表されるためです。
そして、ここでは、バイアスも(l-1)層目の0番目のユニットの1つと考えてしまおう!としています。
よって、この式は、

{\displaystyle
w_{j0}^{(l)}=b_j^{(l)}
}
でしょう。


p51(4.15)の前の文中の式

元の式:
{\displaystyle
デルタの逆伝播計算は {\Delta}^{(L)}=\textbf{D}-\textbf{Y}とした後,...
}

デルタつまり、 \delta_j^{(l)}=\frac{\partial E_n}{\partial u_j^{(l)}}を成分に持つ行列を求めれば、
逆伝播計算が出来ます。
 \delta^{(l)}を求めるには、\delta^{(l+1)}を求める必要があり、
つまりは、 \delta^{(L)}を最初に求める必要があります。
 \delta^{(L)}は、ErrorFunc.やActivationFunc.によって異なりますが、
回帰やクラス分類において、ErrorFunc.に二乗誤差やCrossEntropy、ActivationFunc.にLogistic関数やSoftmax関数を使用する場合は、
計算式が同じになります。それが、 \delta_j^{(L)}=y_j-d_jです。
よって、デルタ(行列)は、

{\displaystyle
{\Delta}^{(L)}=\textbf{Y}-\textbf{D}
}
となると思います。


p85 特徴マップのサイズの式

元の式:
{\displaystyle
(W-2 \lfloor H/2 \rfloor) \times (W-2 \lfloor H/2 \rfloor)
}

CNNで畳込みを行ったときに、出力される特徴マップのサイズは、元画像のサイズ(画素数)とフィルタのサイズ(画素数)で決まります。
画像内にフィルタ全体が収まる範囲内でフィルタを動かしたとき、単純に考えれば、特徴マップのサイズは、

{\displaystyle
(W-(H-1)) \times (W-(H-1))
}
となる気がします。
元の式の間違いのパターンを示します。
元画像サイズW=10, フィルタサイズH=4のとき、
元の式では、 6\times 6となります。
ですが、実際には、 7\times 7です。

ただ、元の式は、「ふち」の量 \lfloor H/2 \rfloorを計算式に含めるといった意味があるともとれます。
この後にpaddingの話がありますが、この時に「ふち」の分だけ画像をサイズを大きくするという作業があるため、
+1程度は誤差とみなし、 \lfloor H/2 \rfloorの式を使おうという意図があるのかもしれません。(?)

また、paddingやstrideも考慮すると、特徴マップのサイズは、
padding量を P、stride量を Sとすると、

{\displaystyle
\lfloor \frac{W+2P-(H-1)}{S} \rfloor
}
になるのではないかと考えています。


[5/9追記] p92,p93 画素ごとの平均の式

元の式:

{\displaystyle
\tilde{x}_{ijk}=\sum^N_{n=1}x_{ijk}^{(n)}
}

これは明らかに間違っていると思うのですが...
平均なので、1/Nがいるはずです。
よって、正しい式は、

{\displaystyle
\tilde{x}_{ijk}=\frac{1}{N}\sum^N_{n=1}x_{ijk}^{(n)}
}

93ページの文中の式も同じです。
元の式:

{\displaystyle
\bar{x}_{ij}=\sum_{(p,q)\in P_{ij}}x_{i+p,j+q}
}

正しい式:

{\displaystyle
\bar{x}_{ij}=\frac{1}{H^2}\sum_{(p,q)\in P_{ij}}x_{i+p,j+q}
}


おわりに

以上が誤植?と思った箇所です!
本に誤植があると、間違いを見つけるまでにかなり時間がかかりますが、
本の間違いを見つけられるほど、内容を理解し、間違いについて調べるからこそ力がつくのかなとも思います!
ただ、間違いをカンペキに理解するほどの時間がないので困りますが...(汗)

この訂正が合っているのか間違っているのか、詳しいかた、教えていただけると嬉しいです。
ではではー

電験3種 体験記と勉強法

平成28年度の第三種電気主任技術者試験を受験し、
翌日の公式解答で自己採点した結果、おそらく合格することができました!
試験時間が余ってマークミスなども念入りにチェックはしているのでたぶん、たぶん大丈夫だと思います。

忘れないように、合格までの道のりと自分の勉強法をまとめておきます。


11/6追記
10/24ごろに合格通知が届きました!
改めて見返すと、文章がハチャメチャだったので、少し記事を修正しました。

[受験年度]
平成26年度・平成27年度・平成28年

[合格科目]
理論→電力→機械・法規

[合格した点数]
理論: 65点(正確には不明)
電力: 55点
機械: 80点
法規: 62点

[使用したテキスト]
完全マスター理論・電力・機械・法規
電験三種過去問題集(10年分)(電気書院)

完全マスターは本当に網羅されていて頼りになりました。
この過去問題集は10年分も収録されている&左側問題/右側解説でとても勉強しやすかったです。
ただ、やっぱり電験の場合は、過去問よりも圧倒的にテキストでの勉強が重要です。
その他、参考書やセミナーなどは利用していません。

[専門分野]
電子情報系(情報寄り)

[得意分野]
数学・情報・単相電気回路・物理(電磁気・基本的な力学)

[勉強時間]
時間は測ってはいません。
学生なので、3年間の春休み・夏休み期間中を利用しました。

[自身にとっての難易度]
法規 >> 機械 > 電力 >> 理論

[感想]
正直なところ、1年目・2年目は電験3種を甘く見ていたかもしれません。
というよりも、1・2年目は、初めから「すべてを理解しよう」として、「暗記」をほとんどしようとしなかったのが最大の反省点だったと思います。

ここからは年ごとに振り返っていきます。

[1年目]
1年目は「目指せ!全科目合格!」と意気込んでいました。
ところが、実際勉強を始めてみると、電力・機械・法規の内容が全くと言っていいほど、頭に入りませんでした。
理論に関しては、学校の授業(電気回路・数学・電磁気学)や電気工作で既知の部分が非常に多く、三相交流以外は問題ありませんでした。
そのため、理論は無事合格できましたが、その他の科目は、実力通り撃沈しました。

[2年目]
2年目は「目指せ!電力・機械合格!」という目標を立てました。
勉強を始めると、
電力は、発電所の話がとても面白く感じ、用語などは比較的すんなり頭に入ってきました。
また、ベルヌーイの定理や出力計算なども物理が好きだったので、基礎から理解できました。
電力の最大の問題点は、理論でも立ちはだかった、「三相交流」でした。
これがどうにも理解できませんでした。
機械は、情報系は得意分野で全く勉強する必要がありませんでした。
実際には見たことのない電動機・発電機の仕組みや原理は、さっぱり理解できず、とても基本的な計算のみ頭に叩きこみました。
そして、2年目の試験は、
電力はB問題の三相交流計算はほとんど間違ってしまいましたが、A問題の正答率の高さでカバーし、
55点というヒヤヒヤする点数ではありましたが、なんとか合格できました。
機械は、「電動機・発電機の原理を理解していないこと」・「三相交流が苦手なこと」この2つの理由で40点程度しか取れず受かることはできませんでした。

ちなみに、1・2年目はほとんど「暗記」をしようとしなかったため、
ほぼ全てが暗記科目である法規はまったく太刀打ちできませんでした。(法規の計算もあまり対策していなかった)

[3年目]
3年目は、ここで受からなければ理論が失効してしまうことや、専門が情報系であるのでいつまでも電験に時間を取られるわけにはいかないというプレッシャーから
「絶対に機械と法規を取らなければいけない!」と考えていました。
「2年間曲がりなりにも勉強してきたことによる慣れ」と「意味が分からないこともとりあえず暗記することを決心したこと」によって、理解量が圧倒的に増えました。
機械は、三相交流はパターンを押さえることによって得意になっていき、誘導機の原理などもとりあえず覚えることによって、徐々に理解できるようになりました。
そして、計算問題ならほぼ間違えることはないと思えるようになりました。原理も大体は理解できました。
法規は、暗記が苦手だったので本当に時間がかかりましたが、なんとか頭に叩き込むうちに徐々に他の知識などと結びついて楽しくなっていき、
基本的な条文や数値だけはなんとか覚えました。
また、三相交流が理解できるようになってから法規の計算が格段に解けるようになり、試験直前には、計算問題はどんな問題が来ても絶対に解けると思えるようになっていました。
そして、3回目の試験では、
機械は問題自体が簡単であったことや、計算が多かったことから、かなりの数の問題を自身をもって解け、結果的にも80点を取ることができました。
法規は、計算問題が少なく難化傾向にあった上に、覚えた条文などはほとんど出ませんでしたが、
計算は100%正解し、文章問題も基礎的な理論や計算の知識から選択肢を2択程度に絞り込むことができ、62点でなんとか合格できました。
自己採点で合格が分かったときはもう...感激でした(泣)

[まとめ]
この3年間を振り返ると、初めは理論を重視しすぎるあまり、難しくて結局理解できず、あきらめてしまっている状態でした。
これを、とりあえず暗記して、あとから理解につなげる方針に変えたところ、徐々に頭の中でさまざまな理論がつながり、一気に理解の幅が増えました。

「薄くでもいいので、基礎を広く」が電験のコツ(?)かもしれません。

自分は暗記が大の苦手だったからで、暗記が得意な方は、ある程度は理解しなくても突破できるかもしれません。
ただ、やはり、実際の様々な場面で生かしたいのなら理解は欠かせないと思います。


また、当たり前ではありますが「三相交流は大事」ということです
ですが、理論で三相交流を勉強してもあまり面白くないので、機械や電力の実際の問題などで、どんな感じに使うのかのイメージを掴んでいくのがいいかなと思います。
法規に関しては、「とにかく計算問題を完璧にする」ことです。
条文はいくらでもありますし、覚えるのはキリがなく、文章問題を本番で確実に解くというのは極めて厳しいです。なので、計算で稼ぎ、あとは文章問題で点を補充するのがベストかなと感じました。

2年目までの浅い理解のまま、たまたま合格できていても、正直、今後の役にはほとんど立たなかったと思いますし、
原理がある程度わかって楽しくなった状態で合格できたのはとてもとても大きかったです。

電験2種/1種と上はまだまだありますが、
電験3種の勉強で、電気の楽しさが分かり、根気も鍛えられたので、自分にとっては本当に良かったです。

...というわけで、情報系の研究者になりたいので、電験2種以上は目指しませんが、
知識などを忘れないように、今後も定期的に電験の問題解説や電気系の原理・計算の解説をしていきたいです

シルベスタの定理の証明

概要

今回は「シルベスタの定理」の証明を行います。
シルベスタの定理とは、

対称行列Aが正値対称行列であることの必要十分条件は、
Aの首座小行列式が全て0よりも大きい値を持つことであり、

負値対称行列であることの必要十分条件は、
Aの首座小行列式が全て0よりも小さい値を持つことである。

この定理は、日本語Webサイトではなかなか正確な証明が出てきません。
そこで、自分なりの証明をしてみようと思います。
独自の証明になりますので、厳密性には欠けるかもしれませんが、何かアドバイスがあればぜひお願いします。
少し長くなりますが、最後までお付き合いください!

前提となる知識

  1. 正値対称行列とは固有値が全て正である行列のことである。
  2. 負値対称行列とは固有値が全て負である行列のことである。
  3. 対称行列の固有値は全て実数解を持つ。
  4. エルミート行列の対角化行列は直交行列である。
  5. LDU分解(同値分解)の導出
  6. 直交行列は行列式の値を変化させない変換である。

前提と書きましたが、6つ目の直交行列の性質については最後に証明しようと思います。

証明へのステップ

シルベスタの証明を行うために3つに分けて証明していきたいと思います。

  1. 2次正方行列におけるシルベスタの定理の証明
  2. シルベスタの定理(一般)の証明
  3. 元の行列式と対角行列式の値が一致することの証明(直交行列変換はノルム不変の証明から証明)

2次における証明は一般化に必要ありませんが、手計算でもできる身近な方法なので紹介します。

2次正方行列におけるシルベスタの定理の証明

貪欲に固有方程式を解いて導きます。
 A = \begin{pmatrix} a&b \\ b&c \end{pmatrix}とすると、固有方程式は、
 |A-\lambda E|=\lambda^2-(a+c)\lambda+(ac-b^2)=0
となります。解の公式より、 \lambdaは、
 \lambda=\frac{(a+c)\pm\sqrt{(a+c)^2-4(ac-b^2)}}{2}

正値対称行列は固有値が全て正であればよいので、条件は、
 (a+c)\pm\sqrt{(a+c)^2-4(ac-b^2)}>0
となります。
 (a+c)+\sqrt{(a+c)^2-4(ac-b^2)}>0
のとき、対称行列であるAの持つ固有値は実数解をもつので、 \sqrt{(\cdot)}(\cdot)は正の値であることから、
 a+c > 0
が1つ目の条件となる。
 (a+c)-\sqrt{(a+c)^2-4(ac-b^2)}>0
のとき、 a+c>0ならば、 a+c>\sqrt{(a+c)^2-4(ac-b^2)} \iff (a+c)^2>(a+c)^2-4(ac-b^2)
したがって、
 -4(ac-b^2)<0 \iff ac-b^2>0 \iff det(A)>0
これが2つ目の条件となる。
また、2つ目の条件から、
 ac>b^2>0
なので、aとcが同符号でなくてはならない。よって、1つ目の条件は、
 a+c>0 \iff a>0
と書き換えられる。
よって、2次正方行列が正値対称行列である条件は、
 a>0, \ \ det(a)>0
となる。

シルベスタの定理の証明

対称行列Aを対角化すると、 \displaystyle{A=P\Lambda P^{-1}=P\Lambda P^T}となります。
Pは直交行列です。
また、LDU分解を用いれば、Aは、 \displaystyle{A=LDU}となります。
ここで、Lは対角成分が1の下三角行列、Dは対角行列、Uは上三角行列となります。
以上より、
 \displaystyle{A=P\Lambda P^T}(ただし、 Pは対角成分が1の直交下三角行列であり、 P^Tは対角成分が1の直交上三角行列)
となります。
行列式を計算してみます。
 
det(A)=det(P\Lambda P^T)=det(P)det(\Lambda)det(P^T)=det(\Lambda)
最後の変形は、対角成分が1である行列Pの行列式は1になること、もしくは、
直交行列が行列式の値を変化させない変換であることを利用しています。

ここからは、LDU分解のメリットから首座小行列について考えます。
LDU分解のメリットは、A,L,D,Uそれぞれの首座小行列を \displaystyle{A_i,L_i,D_i,U_i}とすれば、
 A_i=L_iD_iU_i
が成り立つことです。これは、LDUの積のi行j列の要素はL,D,U全て行列のi行以内j列以内の要素の積のみで構成されるためです。実際に計算してみれば容易に確認できます。
よって、
 A_i=L_iD_iU_i=P_i\Lambda_i {P_i}^T
となり、 \displaystyle{det(P_i)=1}であるため、
 det(A_i)=det(\Lambda_i)
となります。

証明したいことは、正値対称行列であることは、Aの首座小行列式が全て正であることでした。
正値対称行列であるというのは、固有値が全て正であるということです。
固有値が全て正になる条件とはなんでしょうか?
ここでまず、条件として、 \displaystyle{\lambda_1>0 \ \ (det(\Lambda_1)>0)}とします。
次に、 \displaystyle{\lambda_1>0,\lambda_2>0}が成り立つためには、
 \displaystyle{\lambda_1>0}なのは最初の条件からわかっているので、
 \displaystyle{det(\Lambda_2)>0}が成り立てばよいことが分かります。
次に、 \displaystyle{\lambda_1>0,\lambda_2>0,\lambda_3>0}が成り立つためには、
 \displaystyle{\lambda_1>0,\lambda_2>0}なのはこれまでの条件からわかっているので、
 \displaystyle{det(\Lambda_3)>0}が条件であることが分かります。
これを続けていくと...条件は、
 \lambda_1>0,\ \  det(\Lambda_2)>0,...,\ \ det(\Lambda_n)>0
となります。
ここで思い出してみると、
 det(A_i)=det(\Lambda_i)
でした。ということは、先ほどの条件を書き換えると、
 det(A_1)=a_{11}>0,\ \  det(A_2)>0,...,\ \ det(A_n)>0
となります。
負値対称行列についても同様です。
よって、シルベスタの定理が成立することが分かります!


元の行列式と対角行列式の値が一致することの証明

シルベスタの定理の証明では、LDU変換の対角成分が1であることから、 \displaystyle{det(A)=det(\Lambda)}であることを証明しましたが、
対称行列Aの性質からもこれは証明できます。

Uを直交行列とすれば、2次形式を用いて、

\|U\mathbb{x}\|^2 = < U\mathbb{x}, U\mathbb{x}> = <\mathbb{x}, U^T U\mathbb{x}> = <\mathbb{x}, \mathbb{x}> = \|\mathbb{x}\|^2
よって、直交行列Uはノルムを変えない変換であることが分かります。
対称行列Aは直交行列Uを用いて対角化できるので、

\Lambda = U^TAU \\
U\Lambda = AU = {(U^TA^T)}^T \\
det(U\Lambda) = det({(U^TA^T)}^T) = det(U^TA^T) = det(UA) \\
det(\Lambda) = det(A)
ここからわかることは、元の行列式を計算しても対角化した行列の行列式を計算しても同じ結果になるということです。

感想

いやー、疲れました。
2次ですら証明に時間がかかってしまいました。
シルベスタの定理は固有値が全て正(or 負)を判定できるため、極値判定法として用いられます。
様々な本やサイトを読みましたが、「シルベスタの定理はこうです」といきなり提示されて、「じゃあこれを使って極値をとるか調べましょう」
というケースが多いようですが、これでは納得できませんでした。
なので、証明できてよかったと思います。

MonteCarloアルゴリズムの実装

概要

モンテカルロアルゴリズムでπの近似値が出せるよ!」
とか今まで言っておきながら、実際シミュレーションしたことがありませんでした(恥)

なので、とても簡単ですが、R言語で実装してみます。
コードはGitHubに置いておきます。

github.com

シミュレーション方法

モンテカルロ法でπを近似してみます。
方法はおなじみの一辺が2の正方形の的の中に、半径1の円を書き、
乱数(Mersenne Twister)をプロットし、円の中に入った数/入らなかった数を数えるというシンプルなものです。


ApproximatePI = 4 \times \frac{IN}{IN + OUT}

で計算し、出力します。

また、初めは、エンターキーを押すたびに1ステップずつ進むようにしていましたが、面倒なので、
精度を入力し、その精度に達した時に入力受付状態(一時停止)になるようにしました。

シミュレーション結果

初期画面はこのような感じです。

f:id:meriyasu_blog:20160403061730p:plain

シミュレーション開始します。すると、、

f:id:meriyasu_blog:20160403062103p:plain

ここで、止まりました。
 3.141592 \leq ApproximatePI \leq 3.141593 精度で、1356ステップかかり、
 \pi \sim 3.141593と近似できました。

感想

思っていたより早く収束し、驚きました。
しかし、もう一桁精度をあげようとすると、全く終わりません。
有効数字7桁と8桁の壁は大きいようです。

2変数関数の極値問題

次の2変数関数の極値を考えます。

f(x,y) = {(ax+by+c)}^2 \ \ \ \ \ (a, b\neq 0)

まず、x,yそれぞれについての偏微分を計算します。

f_{x} = 2a^2 x + 2aby + 2ac \\
f_{y} = 2abx + 2b^2 y + 2bc \\

x,yどちらの偏微分も0となる(x,y)の組み合わせを探します。
これが停留点であり、極値・最小値・最大値の候補となります。
つまり、

2a^2 x + 2aby + 2ac = 0\\
2abx + 2b^2 y + 2bc = 0\\
を解きます。 a, b \neq 0 であるため、
1つ目の式をaで、2つ目の式をbで割ります。
すると、

ax + by = -c
を満たす(x,y)が解であることが分かります。
 y=k \ \ \ ({}^\forall k \in \mathbb{R})
とすれば、

\left(
\begin{array}{c}
  x \\
  y
\end{array}
\right)
=
\left(
\begin{array}{c}
  -\frac{c}{a} \\
  0
\end{array}
\right)
+
\left(
\begin{array}{c}
  -\frac{b}{a} \\
  1
\end{array}
\right)
k
となります。

Hessian: H(a,b)=0
となるため、
停留点がどのような点であるかは、近傍点を代入するなどの方法で確かめるしかありません。

先ほど求まった極値の候補を元の関数に代入してみます。すると、

f(x,y) = 0
となります。
したがって、求まった停留点は、全て関数値が0になるということです。
ここで、問題に戻ると、

f(x,y) = {(ax+by+c)}^2 = {(\cdot)}^2 \geq 0
となります。よって、先ほどの極値の候補は、全て最小値であり、0になります。

ちなみに、

{f(x,y) = \displaystyle \sum_{i=1}^{n}{(a_i x+b_i y+c_i)}^2}
の場合も、展開後に x^2, y^2, xy, x, y で括るだけなので、
停留点が最小値であるということに変わりありません。

三角関数の諸式の証明

三角関数の様々な等式を証明していきます。
(TeX表記を久しぶりに使いたかったからなんていう理由は内緒( ̄b ̄))


tan(x/2 + π/4) = tanx + 1/cosx

命題:  \tan({\frac{x}{2}+\frac{\pi}{4}}) = \tan{x}+\frac{1}{\cos{x}}

証明には、ピタゴラスの定理( (\sin{x})^2+(\cos{x})^2=1)と加法定理しか使いません。
加法定理は、

\left\{
  \begin{array}{l}
    \sin({\alpha+\beta}) = \sin{\alpha}\cos{\beta} + \cos{\alpha}\sin{\beta} \\
    \cos({\alpha+\beta}) = \cos{\alpha}\cos{\beta} - \sin{\alpha}\sin{\beta}
  \end{array} \right. \\

  \beta = \alphaのとき、\\
\left\{
  \begin{array}{l}
    \sin{2\alpha} = 2\sin{\alpha}\cos{\alpha} \\
    \cos{2\alpha} = (\cos{\alpha})^2 - (\sin{\alpha})^2
  \end{array} \right. \\
です。
 \alpha = \beta のときは、倍角の公式と呼ぶこともあります。
では、証明です。

証明


(左辺) = \frac{\sin({\frac{x}{2}+\frac{\pi}{4}})}{\cos({\frac{x}{2}+\frac{\pi}{4}})} \\ = 
  \frac{\sin{\frac{x}{2}}\cos{\frac{\pi}{4}}+\cos{\frac{x}{2}}\sin{\frac{\pi}{4}}}{\cos{\frac{x}{2}}\cos{\frac{\pi}{4}}-\sin{\frac{x}{2}}\sin{\frac{\pi}{4}}} \\ =
  \frac{\frac{1}{\sqrt{2}}(\sin{\frac{x}{2}}+\cos{\frac{x}{2}})}{\frac{1}{\sqrt{2}}(\cos{\frac{x}{2}}-\sin{\frac{x}{2}})} \\ =
  \frac{\sin{\frac{x}{2}}+\cos{\frac{x}{2}}}{\cos{\frac{x}{2}}-\sin{\frac{x}{2}}} \\ =
  \frac{(\sin{\frac{x}{2}}+\cos{\frac{x}{2}})(\cos{\frac{x}{2}}+\sin{\frac{x}{2}})}{(\cos{\frac{x}{2}}-\sin{\frac{x}{2}})(\cos{\frac{x}{2}}+\sin{\frac{x}{2}})} \\ =
  \frac{(\sin{\frac{x}{2}})^2+(\cos{\frac{x}{2}})^2+2\sin{\frac{x}{2}}\cos{\frac{x}{2}}}{(\cos{\frac{x}{2}})^2-(\sin{\frac{x}{2}})^2} \\ =
  \frac{1+\sin(\frac{x}{2}+\frac{x}{2})}{\cos(\frac{x}{2}+\frac{x}{2})} \\ =
  \tan{x} + \frac{1}{\cos{x}} = (右辺)

まず、加法定理で展開し、有理化を行い、加法定理の逆やピタゴラスの定理を使うことによって、求めています。
このほかにも図形的解法や二乗して計算する方法もあります。
ただ二乗する方法は符号の問題が絡むので多少ややこしいかもしれません。

ノートを作るべきか作るべきでないか

記事の修正は度々していましたが、投稿は久しぶりになります。

いろいろな本を読んでいると、ノートを作るべきか作らないべきか迷うときがあります。
そんなときにどう判断しているかについて考えたことを書いてみます。

まず、ノートを作るか作らないかは、読む本・読む目的の2つの条件で決まります。
場合分けして考えてみます。
前提として、ノートは後で読むのに役に立つために書くものとします。(問題を解くだけのノートとは別)

Read more