hokkun blog

技術の話をメインに、たまに糖質制限の話とか色々したい予定。

数学図鑑〜やりなおしの高校数学〜 補章&すべての感想

数学図鑑〜やりなおしの高校数学〜 第一章・第二章 - hokkun blog

数学図鑑〜やりなおしの高校数学〜 第三章・第四章 - hokkun blog

数学図鑑〜やりなおしの高校数学〜 第五章・第六章 - hokkun blog

これらに引き続いて最後のポストになります。

補章 - 複素数平面(数III)

複素数そのものは僕も高校生の時に習ってるんですが、複素数平面・極形式は最近の学習指導要領の変更で入った(正確には「また」入った)分野ですね。一応電気系出身なので述べておくと、回路解析などには必ず必要な知識になります。複素数平面のところでは回転移動が掛け算で表せるというところ重要なポイントになります。演習問題の京大の問題はちょっと自分には難しすぎた。。


さて、3/1 に目標から1日遅れでなんとか解き切りました。何度か言及したように、平面図形に関連する単元を始めとして省かれている単元も存在しますが、自分の目的(=機械学習の理論の部分へ再入門する)を考えると最低限である解析の基礎、確率・統計の基礎、線形代数の基礎このあたりを復習できたのでよかったかなと思います。まあ、網羅的に学びたい場合同じ著者の

ふたたびの高校数学

ふたたびの高校数学

をおすすめします。

一点だけ、最初のレビューでも書きましたが、挙げられている例・例題が少しわかりにくいものが多かったかなあと思いました。対象読者が社会人〜であることからか、少し実践的な題材を取り上げているのかなあとも思いますが(例えば対数関数の演習問題になっているガラスの反射率の問題など)、もう少し数学的な本質だけの理解で解ける問題がいいなあと思った。まあここは好き嫌い分かれそう。

さて、今度これを買ったので今月末目標で読み切りたいです。

人工知能プログラミングのための数学がわかる本

人工知能プログラミングのための数学がわかる本

数学図鑑〜やりなおしの高校数学〜 第五章・第六章

さて、調子が良いので連日の更新。今日は数B・旧数Cでならう数列、ベクトル、行列について。

前回の記事はこちら↓ hokkun-dayo.hatenablog.com hokkun-dayo.hatenablog.com

本はこちら↓

数学図鑑: やりなおしの高校数学

数学図鑑: やりなおしの高校数学

第五章 - 数列(数B)

いろんな数列→公式の暗記ゲーという印象を受けちゃう、けどしかし、シグマ記号初めとしてこれも大学以降の数学のド基礎になる単元というイメージ。また、数学的帰納法も証明の手法の基本中の基本なのでしっかり抑えたい。今回の目的を考えると、二項間漸化式・三項間漸化式の解法なんかは理解さえしてれば十分だろう。

第六章 - ベクトル(数B)&行列(旧数C)

  • 6.1 ベクトルの基礎
  • 6.2 ベクトルの加法と減法
  • 6.3 ベクトルの内積外積
  • 6.4 位置ベクトル
  • 6.5 ベクトル方程式
  • 6.6 行列の基礎と演算
  • 6.7 行列と方程式
  • 6.8 1次変換

思った以上に忘れていた。。画像処理・機械学習を抑えるために最も関係のある単元なのに。。ベクトルという言葉は実は多義的で(ベクトル - Wikipedia)、高校で習うベクトルは特に断らない限り空間ベクトルのことである。ベクトル方程式なんかは久々に見てほ〜と唸ってしまった。

ところで、各単元のことを思い出すにあたって、以下のサイトを参考にさせてもらった。

examist.jp

こちらの、平面図形に関する部分が面白い。

通常、図形問題の解法は大きく次に分類される。 1. 幾何的に解く(数A平面図形) 2. 三角比・三角関数で解く(数I三角比、数Ⅱ三角関数) 3. ベクトルで解く(数Bベクトル) 4. 座標平面で解く(数Ⅱ図形と方程式) 5. 複素数平面で解く(数Ⅲ複素数平面) どの解法も一長一短で、それぞれにメリット・デメリットが存在する。

なるほどー。確かにいろいろな解き方がある。5番なんかは我々の頃は学習要領の範囲外であったが。

行列については簡単な扱いだった。まあ積の計算とかできればいいのか。あとは固有値固有ベクトル

数学図鑑〜やりなおしの高校数学〜 第三章・第四章

さて、今日は数学図鑑の第三章・第四章について。実は先日、すでに 補章(複素数平面)まで含めて一周し終わったところだが、記憶を掘り起こしながらメモ。 前回の記事はこちら↓ hokkun-dayo.hatenablog.com

本はこちら↓

数学図鑑: やりなおしの高校数学

数学図鑑: やりなおしの高校数学

第三章 - 関数(数I 、数II)

  • 3.1 関数の基礎
  • 3.2 2次関数
  • 3.3 三角関数
  • 3.4 指数関数
  • 3.5 対数関数

何やるにしても基本になる一変数関数の様々な形についての章。高校数学をすべてさらおうと思うと、ここはかなりのボリュームになりそうだが、この本はかなりコンパクトにまとまっていた印象。三角関数の周辺には様々な公式があるが、これについてはまあ完璧に覚えてなくても単位円からなんとなく導出できればよさそうだ。まあ、そうでなくても定理の証明を追える程度で一旦は満足しておくことにする(ほんとはだめそうだが。。例えば加法定理の厳密な証明は東大での出題が過去にあって難しい)。

第四章 - 微分積分(数II、数III)

これから進んでいく予定の解析学の基礎を成すセクション。しかしこの分野、原理をなんとなく理解していても、実際の出題に歯が立たないことが多い気がする。自分が高校生の時もそう思った気がする。例えば、本書の中でも出題のある平均値の定理を使う問題は、「平均値の定理を使う」ということにさえ気づけばかなりスムーズに解法が見えるものの、それに気づくまでが慣れを要する。また、不定積分などは天下り的に使う「テクニック」的な部分も多くて苦手だったのをよく覚えている。しかしそれらの中でも、

あたりは基本としてすっと出てくるようにしておきたい。


さて、この後は数列、ベクトル、行列と数B・旧数Cへと進むわけだが、お気付きの通り、数Ⅱあたりの図形と方程式等幾何は大きく省かれている印象。また、多項定理、部分分数分解や相加平均・相乗平均などを扱う章もない。高校数学を趣味として学びたい人にとってはこのあたりの内容は面白いと思うので、もう少し網羅的な本でやったほうがいいかもしれない。

Flask の logger が日本語を正しく表示しないのでハマった

表題の通り。Qiita に書こうと思ったが、もしかしたらしょーもないことなのかもしれないのでブログにします。

今 Flask でちょっとした Web アプリを書いているんだけど、Python 3 になっても Python のマルチバイト文字の扱いにハマってしまった。 デバッグでログを吐いている部分で、日本語が正しくファイルに出力されていないことに気づいた。

...
# 正しく表示される 
current_app.logger.info("This is not a Japanese message.") 
# 何も表示されない!
current_app.logger.info("これは日本語です")
...

Flask の logger は要は Python 標準のloggingライブラリを使うので、loggingのドキュメントを見てみる→16.8. logging.handlers — Logging handlers — Python 3.6.4 documentation

FileHandlerは、ファイルを開くときにエンコードを指定するようになっていることが分かる。単にビルトイン関数のopen()を呼ぶ。open()ドキュメントを読むと、

encoding is the name of the encoding used to decode or encode the file. This should only be used in text mode. The default encoding is platform dependent (whatever locale.getpreferredencoding() returns), but any text encoding supported by Python can be used. See the codecs module for the list of supported encodings.

とある。利用しているサーバで local.getprefferedencoding()を実行すると・・あれ?UTF-8が帰ってくる。。

しかし、一応FileHandlerのコンストラクタにencoding='utf-8'を追加すると、、動いた・・なぜ・・。

とりあえず、FileHandler を利用する際はencoding='utf-8'を指定しようと思います。理由がわかったら追記します(誰かおしえて)

数学図鑑〜やりなおしの高校数学〜 第一章・第二章

数学図鑑〜やりなおしの高校数学〜を買った - hokkun blogで書いた高校数学の本をやり始めたので、自分用の復習や感想をざっとまとめておきたいと思う。

数学図鑑: やりなおしの高校数学

数学図鑑: やりなおしの高校数学

第一章 - 集合と論理(数I)

一章は高校数学以降の基本となる集合・論理・証明法などを取り扱っている。数学的帰納法とかは出てこなかったけど、後で触れるんだろうか。 このあたりは今でもなんとなく頭のなかで触れることが多い分野なので、あーこれ忘れてたわーみたいなのはあまりなかった印象。 ちょっと気になるのは解説の部分で取り上げられている例が少しわかりにくい。例えば背理法の例で、「有史以降未来から来た人がいるという記録はないので、タイムマシーンは未来永劫作られない」みたいなのがあるけど、正直「記録はない」とかもしかしたら未来では記録が残らないようにしているのかもしれないし、過去ではなく未来にしか行けないタイムマシーンができているかもしれない。もう少しイメージしやすい例を取り上げてほしかった。

第二章 - 場合の数と確率(数A)

  • 2.1 場合の数
  • 2.2 確率の基礎
  • 2.3 和事象の確率と確率の加法定理
  • 2.4 反復試行の確率
  • 2.5 条件付き確率

こちらは機械学習を学ぶ上で必須となる統計に関する知識の更に前提である確率に関する章。順列、重複順列、組み合わせ、重複組み合わせの話題から始まり、条件付き確率・ベイズの定理までを扱う。基本的に高校数学で扱うのは離散確率分布である。場合の数の部分の問題を解くテクニック、久々に思い出した。。例えば、

A~D のアルファベットを並べ替える。AとDが並び合う場合は何通りあるか?

という問題を考える。この場合、ADをひとつの組として、3種の文字の並べ替え問題に置き換え、その後ADの順番を考えて2倍する。(正解は{ \displaystyle 3! * 2 = 12} 通り。)

上記の設定で、D が C より左にある場合は何通りあるか?

という場合は、一旦 D と C を例外ケース X として、4つの文字の置かれうる場所から X の置く場所を2つ選ぶと、 { \displaystyle {}_4 C_2 = 6 } 通り。さらに残りの2箇所の A, B の順列は { \displaystyle 2! = 2} 通りなので、合わせて12通り。最後に X を D と C に戻すが、D は常に必ず C より左なので 60 通りの A, B, X, X の順列に対して一つの D, C の置き方が対応するので、 { \displaystyle 12 * 1 = 12} 通り。

こういったテクニックは久々に見ると懐かしさを感じられた。

こちらもたまに例が気になる。順列の例で3人のチームからリーダーとサブリーダーを選ぶ場合が取り上げられているが、「選ぶ」という行為を順列の例にするのは最初としてはどうだろう。。組み合わせとの対比を意識されているのかもしれないが、少しわかりにくいなあと思った。

数学図鑑〜やりなおしの高校数学〜を買った

数学図鑑: やりなおしの高校数学

数学図鑑: やりなおしの高校数学

こいつを買いました。きっかけは前も書いたとおり機械学習をしっかり学び直す上で、まずは高校数学と大学数学を復習したいということで。 目次は以下の通り。

  • 第1章 集合と論理(数I )
  • 第2章 場合の数と確率(数A)
  • 第3章 関数(数I 、数II)
  • 第4章 微分積分(数II、数III)
  • 第5章 数列(数B)
  • 第6章 ベクトル(数B)&行列(旧数C)
  • 補章 複素数平面(数III)
  • 大学入試の問題に挑戦!

最後に練習問題(東大・京大の問題もある)があるようなので、読み進める→問題解く→読み進める→問題解く・・のほうがよさそうなので一旦「集合と論理」からそのつもりで進めようと思う。

趣味のウェブアプリも進めたいので、まずは2月末を目標に読み終わりたい。一章ごとに書くことがあればブログ書こうと思う。


2018-03-10 追記

2018-03-01 に読了しました。感想等などのまとめは以下の記事を参照。

数学図鑑〜やりなおしの高校数学〜 第一章・第二章 - hokkun blog

数学図鑑〜やりなおしの高校数学〜 第三章・第四章 - hokkun blog

数学図鑑〜やりなおしの高校数学〜 第五章・第六章 - hokkun blog

数学図鑑〜やりなおしの高校数学〜 補章&すべての感想 - hokkun blog

2018年上半期の目標とこのブログの使いみちについて

あけましておめでとうございます。 2018年ですね。今年の上半期の目標をなんとなく書いてみます。

  • 高校数学〜大学数学を勉強する
    • 去年、ICLR2017読み会 - connpassに参加するとかして機械学習も少しずつ勉強しとこうと思ったんですが、正直久々過ぎて基礎がなってなかったのでまず高校数学にまで戻ることにしました。今使う参考書を選定中。
  • 去年末から作り始めちょっとしたウェブアプリを完成させる
    • まあいうてもふたつのウェブサービスをくっつけるだけなんですけど、一旦完成させることが大事かなと。
  • 仮想通貨の技術的側面についてもう少し勉強しとく
    • これからはエンジニアも Fin Tech だったり仮想通貨関連だったりの職が増えそうなのでそのあたりも見据えて。去年もブロックチェーン回り勉強したけど半端だったので・・。まあしかし上記二つ優先で行きたいと思います。目標だけでかくても達成できなかったときの無力感につながるから・・

ところで、このブログ作って以降だいぶ放置だったんですが、Qiitaにはいくつか記事を投稿してました。 スポットぽい技術記事はこういう個人ブログより Qiita のほうが相性が良さそうなのでそっちに投げてました。

なので、今後は

  • 日記っぽい進捗メモ
  • Qiita に投稿した記事のまとめ

とか Qiita にあんまそぐわない感じの記事をかけるようにしたいです。あと書評とか。 それこそ、

インフラエンジニアの教科書

インフラエンジニアの教科書

インフラエンジニアの教科書2 スキルアップに効く技術と知識

インフラエンジニアの教科書2 スキルアップに効く技術と知識

あたりは読んだのでもう一度さらって記事書きたいところ。