自己参照
式を含むこともよくあるため, 記事本体はアーカイブサイトへのリンク先にまとめています.
今回は日曜から前泊で出張で, 夜もヘロヘロで何もできなかったので情報共有系のネタがあまりありません.
メルマガのバックナンバーは次のページにまとめてあります. 興味があればどうぞ.
「読んだよ」だけでもいいのでぜひ感想をください. メルマガを書く励みになります. 最近感想を頂く機会が増えてきたので素直に嬉しいです.
メルマガへの返信でも構いませんし, 次のアンケートフォームへの回答でも構いません.
ではまたメールします.
以前スピン系の本か何かの査読応募に出したときの話か, 田崎さんからメールが来ていたのでここでもシェアします.
田崎さんのホームページのトップからリンクされていて, 非公開のページではありません. むしろYouTubeにあがってさえいる動画なので積極的に宣伝していい動画でしょう.
一昨年のスピン系の本さえまだ読み切れていないくらいですが, 学部二年のとき田崎さんの熱力学の本を読んで感動して, 学習院に遊びに行ったり, 数理物理を本格的に意識したきっかけの人です. 私の修論も田崎さんが書いたレビューを参考にしていますし, ハバード模型の拡張でさえあります. 講演も非常にうまいので興味がある方はぜひ聞いてみてください.
出張で平日はほぼ何もできなかったのですが, 出張の移動中, そして月曜の夜だけは何とか競プロの問題を解いていました.
いま私が把握している限り, 私のメルマガを読んでいてプログラミングに興味があるのは, 「プログラムが一定以上書けて, 何らかの理由で数学を勉強したい・しなければいけない人」と思っています.
(数学よりのスタンスでプログラミングもやってみたい人がいたらぜひ教えてください. このあたりにも書いたように, 私はまさに「数学よりのスタンスでプログラミングもやってみたい」勢です.)
さて, 上記の層の人で, いわゆる「文系プログラマー」の方もいらっしゃいます. 特に「数学的思考力」(とかいう何か)に課題を感じている人もいます. かといって何をしたらいいかわからない人も多いようです. 実際にプログラムを書いて中高数学の問題を考えてみよう・解いてみようというコンセプトのコンテンツがまさに応用からの中高数学再入門 自然を再現しよう 中高数学駆け込み寺, プログラミングで数学を 中高数学虎の穴です. もちろんとにかく数学がしたい, 私と同タイプの人には勧められる一方, これは良くも悪くも数学しすぎているきらいもあります. 入口としてどこがいいかはずっと考えています.
そしてこれも何度も書いているように, いまその入口としてアルゴリズムとデータ構造・競技プログラミングを考えています. 動的計画法やら何やら, 明らかに知るべき知識・技術もあり, 本もたくさん出ています. ただ本は読むだけ読んで知識としてもプログラミングを組み上げる能力としても全く身についていないので, 年明けからまずはAtCoder Problemsにひたすら取り組んでいます. もともと10題くらい解いていたところから, 毎朝起きて朝の支度をしたあとの時間を使って取り組み続け, 300題中114題まで来ました.
少なくともMediumの13問程度まで, 問題を解くのにアルゴリズムとデータ構造の深い知識はほぼ不要です. プログラミングとしては適切な配列の処理をがんばるだけです. 問題もほぼ例外なく場合の数の数え上げで, 小学校の算数または中学・高校の場合の数の問題で, 数が冗談みたいに多いバージョンです.
こう書くと状況は明らかに限定的ですが, それでも数学・プログラミング学習に役立つ点があります. いまの時点でいくつか気付いた内容を紹介します.
まず「場合分けの必然性」です. 高校の頃, 数学の問題を解いていていろいろな場合分けが自力でできずにハマりまくっていたことがあります. 数学の先生は「場合分けはいわゆる発想やひらめきによるのではなく, 自然とそうやるべきことなのだ」と言っていました. 「自然とそうなると言われても」と途方に暮れていたのを思い出します. 今は多少なりともその気分はわかります. 自然と「この場合は大丈夫か?」と心配になるのです: ある程度できるようになれば. AtCoderでもWA(Wrong Answer)になったとき, 何かのコーナーケースを落としているときがありました. 解説を見るなり他の人のコードを見るなりして「ああ, 確かにこの場合が抜けていた」, 「考えてはいたがプログラムに表現しきれていなかった」と思うことがよくあります. この場合分けの思考は場合分けだけではなくありとあらゆる数学の場面で基本的です. プログラミングなどの実務でもテストでのコーナーケースの問題に直結します. プログラミングができる勢は場合分けはこうした場合分けをコーナーケースの確認なのだと思うと, 少しは場合分けに関する数学的思考を体感する糸口になるはずです.
あとは人力での計算とコンピューターにさせる・させられる・させたい計算の違いがあります. 人間(自分)がやるならこう, という計算の処理をコンピューターに直接辿らせるのは難しい, 少なくともその処理が自分にはさっと書けないことがあります. 競技プログラミングの制約として時間内に処理させきらなければならず, その点もアルゴリズム構築上の制約になる場合があります. 人間(自分)が考えるようにプログラムを書いた方がいい場合もあれば, 剛腕で全部計算させるタイプのプログラムを書いた方がいい場合もあれば, 少し工夫しないと意図通りの計算をさせられない場合もあります. 初心者レベルだとこの少しの数学と少しのプログラミングの技術の組み合わせで答えでさっと書けます. もしあなたにプログラミング系の素養があって数学的思考に難を抱えている自認があるなら, 騙されたと思ってAtCoder Problemsの300題を解いてみてはどうでしょうか? 上で書いたように, 少なくともコーナーケースの嗅ぎ分け能力を上げると, 場合分けに関して数学のありとあらゆる場面で役に立ちます.
一覧ページがすぐに見つからなかったのですが, AtCoderだと大体どんな言語でも使えるはずです. プログラムを書いたことがなくても, 公式でC++入門コンテンツがあるのでこれを読むといいでしょう. 最近はPythonによる本が充実してきているので, 入門レベルならPythonで十分です. (私は趣味でF#が基本, 最近Common Lispを並行して勉強しているところです. 聞ける人が少ないと思うのでどちらも初学者にはお勧めしませんが.)
今年は計算しまくる年にしようと宣言したわけで, プログラミングでも年始から計算し続けていて, まだまだ本当に続けているぞという宣言を改めてしておきます. 年始に目標を掲げても二月になるとその目標への取り組みをやめてしまう人が8割を越えるとか. 私はまだまだ続けています. 競プロはようやく少し楽しくなってきたところです. 現状私がプログラムネタで気楽に楽しめる数少ない領域です. ぜひ一緒にやりましょう.
数学系プログラミングもいろいろ調べて実践もしている証拠として, clj-maximaのREADMEのサンプルコード修正プルリクを出しておきます.
READMEのサンプルコードとはいえ, 明白なコード修正のプルリクを送ったのははじめてで, 取り込まれたのもはじめてだったので自分用の記念です.
上でCommon Lispをやっていると書いたのもこれの影響です. 去年から素数夜曲のためにSchemeをやっていて, さらに先日からfdg-bookやSICMUtilsの話をしているように, ここ最近割とClojure・Schemeづいています. Clojureはすっきりしていてかなりお気に入りですが, 上記ライブラリがまだ発展途上なのが面倒です. Pythonはnumpyやらsympyやらあって私自身学習の記録を整理してコンテンツも作っていますが, 微妙なメンテナンスが入って面倒です. 今も開発が続いてはいるものの, かなり枯れていて後方互換性がかなり強く担保されていそうな言語としてCommon Lispはだいぶ前から視野に入っています. AtCoderでプログラムを書くレベルならもう少し強化しても罰は当たるまいと思ってついでに強化中です. (Common) Lispは古い言語なのでかなり設計も古くて半端なところはあります. 改善のためのrutilsなどのライブラリもありますが, このライブラリはAtCoderで使えないのでがんばって裸のCommon Lispで書いています.
ちなみにmaximaのプログラムを実際に読み解く勉強会, 需要あるでしょうか? 私の場合, 例と計算編のような自発的なやる気が出る話以外は, 勉強会形式で無理やり話すための勉強時間を作らないと続かないことが見えています. 興味がある人がいたら連絡ください. 何か考えます.
今週は忙しくて何もできなかったため, 残念ながら新規追加はありません.
とはいえ, 例と計算編は私自身のためにも日々せっせと計算して更新しています. 購入された方はぜひ参考にしてください.
例と計算編は次のリンク先から購入できるので, 興味がある方はどうぞ.
数物系のメルマガが式を含むことも多いため, 記事本体はアーカイブサイトへのリンク先にまとめています.
今週は日曜前泊からずっと出張でほぼ何もできていません. 先週出していなかった分の学習ログを共有します.
メルマガのバックナンバーは次のページにまとめてあります. 興味があればどうぞ.
「読んだよ」だけでもいいのでぜひ感想をください. メルマガを書く励みになります.
メルマガへの返信でも構いませんし, 次のアンケートフォームへの回答でも構いません.
ではまたメールします.
今回は未公開分の先週の学習ログです. 単語について詳しくは単語集ページも参考にしてください.
簡単に全体を見渡すべく動詞を数えます.
途中のllevar, introducirは原形なので不定詞句で出てくるはずです. つまり五つの文または節が必要です. これを上のように分解しました. いつも通り動詞の活用から主語を割り出し, 自動詞・他動詞の区別から目的語の有無を判定し, 関係詞節の欠けた要素を割り出しましょう.
querer+不定詞はwant+to不定詞なのでqueremos+不定詞で抜き出します. ここのestaにはアクセント記号がないため, estarの三人称単数現在形ではなくthisにあたる指示形容詞です. introducirは不定詞なので適当な不定詞句で解釈する必要があり, ここではyによる並列も考える必要があります. 特にqueremos+to不定詞が並列で置かれたと解釈するのが自然でしょう. これで動詞回りがわかり, ついでに大きな文構造も取れました. to不定詞句の不定詞は他動詞だからあとは主語・目的語・形容詞句・副詞句などを特定してピースを埋めます.
queremosは一人称複数形だから主語は明らかにweの省略です. 目的語は形式的にはto不定詞句で, 特にto不定詞句の目的語として(llevar) esta suposiciónと(introducir) una hipótesisが候補に挙がります. 前者には前置詞句al nivel de hipótesisがさらについていて, 後者には名詞句una hipótesis adicionalがついています.
まとめて英訳すれば次のように書けます.
動詞は明らかにserá llamadoで, スペイン語がよくわからなくてもフランス語との類似で何となく未来形感を感じます. 何にせよllamadoが過去分詞だから未来形の受動文で, seráが三人称単数形だから主語は三人称単数です. ここでは明らかにcuyo contenidoです. cuyoはcontenidoを受けて男性形なので先行詞探しは別枠で考える必要があります. もちろん文の流れ, そして意味を考えればsuposiciónしかありません.
次にllamarを考えます. これはcallにあたり英語でいう第五文型を導けるため, 補語的な要素を持つ可能性があります. de ahora en adelanteでfrom now onの熟語で副詞なので, 「相対性原理」が浮いています. これはまさにSVOCのCでしょう. これで全ての要素に役割が与えられました.
まとめると次のように英訳できます.
本動詞はpareceで三人称単数現在形です. 原形のserがあって形容詞incompatibleが続くためparecer+不定詞+形容詞の述語句が見えます. 文の流れからするとこのque節はuna hipótesis adicionalの内容を説明しているはずで, solamenteは副詞, a primera vistaで熟語的な副詞(at first glance)であり, principioとcon el, relatividadはde laで前置詞の支配を受けているため, 浮いている名詞は関係代名詞とみなしたときのqueしかありません. これで主語が確定しました.
意味としてincompatibleに対して何がincompatibleなのかを補足するべくcon el principioがあります. 定冠詞つきだから何の原理なのか気になるわけで, それを示すのがde la relatividadです.
まとめると次のように英訳できます.
ここはsostieneが三人称単数現在形で, 三人称単数の女性名詞hipótesisを 形容詞dichaとadicionalが挟んでいます. (Dichaを見てもhipótesisの性が推測できます.) sostenerはholdの意味でhold that構文が推測できます.
まとめると次のように英訳できます.
英語holdにあたるsostenerに続くのでおそらく完全な文を作るはずの節です. それを念頭に置いて読みましょう. 動詞は再帰動詞のpropagarseで, ここでのpropagaは三人称単数現在です. そもそも浮いている名詞はla luzしかなく三人称単数なので主語は決まりました. 残りは名詞句el espacio vacíoが前置詞en, cierta velocidad $V$が前置詞conの支配を受けているため, 副詞句と解釈すれば全ての要素が分類できます.
まとめると次のように英訳できます.
意味としてもcierta velocidadが何なのか気になりますし, 文の流れからしてもこれを先行詞とした節のはずです. 動詞は(no) dependeで三人称単数現在で, 他の名詞はdel estado, de movimiento, del emisorと全て前置詞の支配を受けているため浮いた名詞は関係代名詞とみなしたqueだけで, 主語の判定と節の分類ができました.
dependerと言えば英語のdepend onが想像され, depend onの形で他動詞とみなしたときの目的語がほしくなります. スペイン語ではdepender deで(del = de+el) estadoが目的語です. 単にestadoでは意味がわからないのできちんと補足があり, de movimientoが続き, さらに何のmovimientoかがわからないためそれを補足するdel emisorがあります. これで全ての要素に役割が与えられました.
まとめると次のように英訳できます.