地震のイベント数が多くない?

今日、久しぶりにHi-net 高感度地震観測網を見ると、この30日間のイベント数が23,667とある。熊本の地震の頃よりもイベント数が1万ほど多い。群発地震とかのニュースもあまり目にしない。図を見ると列島全体で頻度が嵩上げされたような雰囲気。気になったのでメモを残しておく。

[2016.9.1追記]Hi-netの当該ページ*1には次の記載があった
平成28年4月14日〜7月24日の震源情報について】
平成28年4月14日の熊本地震発生以来、熊本地方やその周辺では非常に活発な活動が続いていたため、 7月24日までに熊本地方周辺で発生した地震について、気象庁一元化震源要素には、規模の大きめの地震が優先して登録されていました。 7月25日以降、熊本地震地震活動領域内で発生した地震については、規模の小さい地震も含めて掲載されています。 参照にあたってはご注意ください。
とは言うものの、数年前のスクリーンショットを見直したら、30日でおよそ1万イベントくらいだったので、小さい地震も拾うようになったのであろうか?

Excel VBA で曜日の文字で回るループを作成する

自分用の覚書。Const では配列 Array を用いることができないので、文字列をデリミタ(ここではカンマ)で区切って、Split() で配列に分解する。Dictionary オブジェクトで連想配列を作って曜日で参照する For Each ループを作成した。サンプルコード

Const sList曜日 As String = "月,火,水,木,金"
Sub test(dic as Object)
    Dim v曜日 As Variant
    For Each v曜日 In Split(sList曜日, ",")
        MsgBox dic.Item(v曜日)
    Next v
End Sub

円の問題を丸く収めようとしないバカ

今日の釣り堀
算数の問題「円周率を3.14とするとき、半径11の円の面積を求めよ」の解を379.94とするのは誤り? - Togetter(4ページ目くらいで挫けた)
http://b.hatena.ne.jp/entry/togetter.com/li/940931
小学生の小数の計算問題の文脈なら「円周率を3.14とする」なので11×11×3.14=379.94でもいいんじゃないの?多分、10進表記の積の演算ルール(すなわち筆算)の運用が主眼じゃないかな。そこに「有効数字」だのと、場違いの文脈依存のフレーム問題をこねくりまわしてよろこんでバカじゃないかと思う。
まず 3.14 という値は、円周率の10進表現を 3.141592654 で近似して計算すると*1、相対誤差が 0.001592654 ÷ 3.141592654 = 0.000506957 くらいなので「およそ1/2000」の食い違いである。円の面積の公式はπ×r×rなので、面積の相対誤差も1/2000程度である。バスケの選手の身長を1mm程度測り間違えた程度。そのあたりの誤差評価がtogetterには全然、出てこないので、「工学(or物理)がー」「算数(or数学)がー」と言っている割には、実用的な値の求め方に対するセンスが誰にも無い*2
もし「有効数字」を考えたいのなら、こんな問題を提案すべきだ

1mm方眼紙を用いて、半径11cmの円を描き、その面積を升目を数えて求めなさい
(ちょっと広い方眼紙を買えば実現可能だし、答えはおよそ3万8千個で下2,3桁にブレが出るだろう。)
しかし「有効数字こだわり派」の発言の中には、そんな小学生にも操作可能な実際的な問題の提案はなく抽象的な「べき論」ばかり。つまり「値」に関する実用的なセンスが無い。
それからtogetterの中にもハテブにもツッコミがあったが、「有効数字」は「計測値」に対するもので「定数」に対するものではない。が、しかし、定数を10進表現して打ち切ったときに打ち切った部分が真値とどれだけズレを持つか?という、打ち切り近似の収束性の問題は考えることができる。相対誤差がおよそ 1/2000 なので、0.19 ≒ 0.2 cm2くらい。1mm方眼紙にすると20升目分くらい。(ただ「打ち切り数値の収束性」の話を「有効数字」と言っちゃうセンスの無さがバカバカしい。)
約3万8千の升目に対する20升目程度のブレに「小学生にも操作可能な具体的なイメージ」を持たずにこだわるあたりが、みなさんとことんセンスが無い「杓子定規VS杓子定規の空中大決戦」になっていると思う。

*1:我が家の5年生は 3.14159 くらい、習っている小学校の先生は30桁くらい覚えているようだ。好きだねぇ。

*2:とくに@odakinと@astrophys_tan

130年の放置プレイ?タイトル盛り過ぎでしょう、佐野先生

プレスリリースがかなりミスリーディングで「はでに盛った」解説の書き方になっているのだが*1、立場上センセーションを追いかけざるを得ない大学広報の意向を汲んでいるのではないかと邪推している。

乱流発生の法則を発見:130年以上の未解決問題にブレークスルー - 東京大学 大学院理学系研究科・理学部
一般論として学者の説明は「地味」で「精確」で結果として一般向けには分かりにくくなる傾向があるのは確かなので、これくらいの派手なプロモーションもあって良いのではないか。ただこのプレスリリースの中身を理解するには流体の研究を始めた大学院生程度の知識は必要だし、そうであればこそ大学院に入りそうなくらいの学生向けのカウンター情報は必要だろう。
さて乱流はおそらくは「博物学」を作らないといけないかもしれないくらい現象として多様であり、今回チャネル乱流の発生時の規則性は見つかったが、これが他の乱流(例えば翼の上の流れや、気象現象)への応用が効くかというと難しいのではないか。というのも、流体の運動の研究をややこしくしているのは何も「非線形性」だけではなくて、流体の流れる場所の境界の形状や温度などの「境界条件」によってもコロコロ変わるからだ。流体の絡んでくる自然現象は多様であり、それだけに「境界条件」も「方程式の解」も多様である。
今回の研究で「法則規則性」は見つかって理論物理学者は喜びそうだが、工学的には「予測」「制御」への応用は難しいと思う。というのも、directed percolation という現象論モデルできれいにデータを整理できるという話であり、「なぜその規則性が、その形状・状態の、その速度で、生れるのか?」という大問題は未解決のままだからだ。さらにはこの規則性はどの形状まで適用可能なのか?は謎のまま。*2
乱流の発生は130年間未解決だったか?というと、そうではない。例えば気象現象の基礎となる熱対流による乱流を例に取ると、線形安定性の解析は1960年代の Chandrasekhar の教科書*3や、カオス研究の紹介ではおやくそくの題材の Lorenz アトラクタを出す Lorenz モデル*4、倍周期分岐 (period-doubling bifurcation) による乱流への遷移*5など、1980年代くらいのカオス研究や数値シミュレーション研究の勃興期くらいから、かなりの基礎的なことが実験的にもシミュレーション的にも分かっている(佐野先生も液晶を使って対流のパターンとかの実験をやってらしたはず)*6
その一方で、壁に挟まれた領域の流れやパイプの中の流れの不安定化の問題は亜臨界分岐 (subcritical bifurcation) であり、理論的にかなりハードであることが知られていた。ハードになるには理由がある。「境界の形状に応じた流れ」が存在しているところに、「流れに揺さぶりをかける」とどのように流れが反応するのかを調べねばならない。ということは元々の「境界の形状に応じた流れ」を調べねばならない上に、その流れに応じた線形安定性問題、非線形の解の分岐の問題を扱わなければならないからだ。数学的には…、まずはじめに「揺さぶり」を記述する方程式が線形だけれども非エルミートになるし(量子力学固有値問題がなんとうらやましいことか)、さらには分岐の後の解は(乱流まで含めて)数値計算で求めるしかない。
今回の研究の「研究者向けの目玉」は流れが速くなるにつれて乱流の振るまいがどのように変化するかを丁寧に整理していることなのだ。「乱流の変化」を整理したら「乱流の発生」の振る舞いに臨界現象との類似が見つかったということ。後知恵で見ればそれはそうだ。不安定性の開始点では不安定モードが異常に長い相関距離と相関時間を持つ(という「ジャーゴン」で線形安定問題を見る流体力学者は多くない気がする)。しかし未知の野を切り開き、それを見出すことはなんと難しいことか。
いままではある意味で「何が問題なのかわからない」という出来の悪い学生のような状態であったところに、「directed percolation で記述できるダイナミクスは何か」という研究目標ができたのだ。もちろんこれが理解のすべてではないと思う。チャネル流平板クエット流の研究では河原・木田の「乱流の骨組みとしての不安定周期解」*7という大発見もある。
というわけで、乱流発生に関する「きれいな貝殻」はプレスリリースのタイトルとは裏腹にまだたくさんあるんじゃないかな。

*1:注:プレスリリースとアブストラクトだけ読んで書いている。

*2:蛇足だが、断面が正方形の管と円の管では臨界レイノルズ数が違う。

*3:Hydrodynamic and Hydromagnetic Stability (Dover Books on Physics)

*4:熱対流の記述には粗すぎる近似だけど。

*5:Libchaberの実験なんかのレビューとかすぐに見つからないな(情けない>自分)。

*6:だから、この辺は刈り取りがほぼ済んで研究をやるネタが無い分野でもある…とボクは思っている。

*7:GENTA KAWAHARA and SHIGEO KIDA, Periodic motion embedded in plane Couette turbulence: regeneration cycle and burst, Journal of Fluid Mechanics / Volume 449 / December 2001, pp 291- 300. http://dx.doi.org/10.1017/S0022112001006243

n進法の位取り表現(2016年センター試験数学IA,第4問(2))

教育用のメモ。位取り記数法は1年生春学期のコンピュータリテラシーの授業で取り上げるので、資料作成に影響してくる。

2進法で 11011(2) と表される数を4進法で表すとコサシ(4)である。*1
寡聞にして、アラビア数字を用いたn進法の表記で文字列の右下に括弧付けをして書くという表記法は初めて見た。ちなみにWikipediaでは英語版が「記数に底を右下添字に括弧なしで付ける」*2、日本語版が「記数を括弧でくくって底を右下添字に付ける」*3だった。高校の教科書を見ておかないといけないな。
[追記:2016.1.19]数学の入試出題で一目置かれている同世代の同僚に訊くと、自分たちの中等教育でもそうだったとのこと。指導要領解説に記載があるとのこと。確かに指導要領解説のp.49に表記があった*4。(自分の東京書籍版の「数学I」「数学IIB」「数学III」にはp進表現の記載がなかった。モノグラフ公式集(5訂版)の目次では[補], つまり教程外の扱いだった。)

蛇足:6進法は地味に計算を書いた者勝ち:0.3_{(6)}=3\times\frac16=\frac{3}{6}=\frac12=0.5, 0.43_{(6)}=4\times\frac16+3\times\left(\frac16\right)^2=\frac{27}{36}=\frac34=0.75, 0.043_{(6)}=4\times\left(\frac16\right)^2+3\times\left(\frac16\right)^3=\frac{27}{216}=\frac18=0.125.

*1:正解は123(4)。解き方は位取りの底が4=22(これは2bit)なので、5bitの数を下位の桁から2桁ずつ括って、11011を[01][10][11]と括って変換する。

*2:Positional notation - Wikipedia

*3:位取り記数法 - Wikipedia

*4:文部科学省, 『高等学校学習指導要領解説 数学編』, 平成21年11月; http://www.mext.go.jp/component/a_menu/education/micro_detail/__icsFiles/afieldfile/2012/06/06/1282000_5.pdf

「スターウォーズ/フォースの覚醒」、あるいは新しいディズニー・ヴィランの誕生

「第3デススター*1」の「拡散波動砲*2」が火を噴いたとき、心の中でひそかにあれは憎しみの光だとつぶやいてしまったのは誰にも内緒です。


ディズニー作品をそんなに見ているわけではないので、ヴィランズにどんな類型あるか知らんけど。


20世紀フォックスのオープニングファンファーレが失われ、単行本の帯が失われたかのような喪失感とともに物語は始まる。
主人公のカイロ・レン(異論は認めない)がとても魅力的。前6作が壮大な「父帰る」ストーリーであり、エピソード3を作って、ようやくエピソード6の表題「ジェダイの帰還」を回収したあとに、奴隷業者ディズニーが何をぶつけてくるのかと思ったら「あすなろ物語」だったのでビックリ。やっぱスターウォーズって主人公の「成長譚」だよね。
ここのところディズニー映画は「ラプンツェル(entangled)」「メリダ(brave)」*3「アナ雪(frozen)」と形容詞・過去分詞1単語路線のフェミ全開の進歩的な「(か弱い)お姫さま」否定路線を突っ走っているし、「アナ雪」のエルサや「マレフィセント」のように純真な主人公の闇落ちストーリーも描くようになっているから、半端でダイ・ハードな勧善懲悪の脚本にはならないだろうと思っていた。
カイロ・レンは生まれついての才能にあふれていながら、なぜだかグレて家族のもとを飛び出して武装集団「最初の注文」の準リーダー格(リーダーはかなりの大物…サイズ的に)としてブイブイゆわせているところから物語は始まるのだが、なんかちょっと思ったようにいかないと、すぐにキレてライトセーバーを振り回す(インパネの修理代が結構かかりそう)。お前、何歳児だ?(未熟さの描写がこどもにも分かりやすくて、さすがディズニー)
冷酷な悪のヒーローに徹しているのかと思っていたら、時々、弱気になってしまい、「闇落ち」ならぬ「光堕ち」しそうになって葛藤して、おじいちゃんの形見にゴメンナサイしているところが、ちょっとかわいい新しいディズニー・ヴィランズの誕生を告げていて、今後どのような成長を遂げるのか目が離せない存在として描かれている。…ほんとにお前、何歳児だ?
しかも、成長物語のおやくそくどおりに同じ才能を持つ強力なライバルが現れて、弱点を見透かされてオロオロするは、キーアイテムの聖剣エクスカリバー*4にはソッポを向かれてしまうはと、ハラハラする展開の連続である。今後のおやくそくの展開としては、苦しい修行による成長とライバルの打倒が来るのだが、悪を極めておじいちゃんの遺志を実現できるのだろうか?乞うご期待!
さらには「青年の成長の物語」につきものの「父殺し」すなわち親からの自立とそれに伴う葛藤とアイデンティティの確立のエピソード(描写がリアルでとてもビックリ)もあったりと、「おやくそくのキャラの造形とプロット」がてんこ盛りである。うん、これできっと精神的に成長するんだね!
というわけでエピソード8にどんな展開をもってくるのだろうかと思うとワクワクしてしまうのであった。


あと気になるのは、主人公のレイとフィンが孤児であり(レイは捨てられて、フィンは誘拐されている)、そのことを彼らがファミリーネームを持たないことで表現していること*5。これとカイロ・レンが彼の「理想の共同体」に身を投じ、家族を捨てていることとが対をなして、現在の(主に中東の?)悲惨な社会状況のアレゴリーのようにも読めることである。

*1:starkiller base スターキラー基地という名前らしい。ちなみに演説の場面で「ガ○マは死んだ!なぜだ!」と心の中で吹き替えてしまったことも内緒です。

*2:superweapon 超兵器としか呼ばれていないようだ

*3:"brave"「メリダとおそろしの森」って、制作がピクサーで配給がディズニーなんだ。

*4:エピソードVで失われてしまったはずだが…。てゆーか、失われ長いこと忘れらていた伝説上のアイテムがひょんなことから主人公の前に出てくるなんて、何て「指輪物語」?

*5:SWの主要キャスト級の「人間態」キャラでフルネーム、あるいは[役職・尊称]+[名前]が設定されていないのは珍しい設定。多分、「何者でもない」彼らが最後に「名前」を手に入れて、「所属」とアイデンティティを確立するという展開になるのかな?

64bit の Windows10 上でフリーの fortran コンパイラを導入して、簡単なプログラムを作成する

超ビギナー向けの Windows 上の fortran コンパイラのインストールについて。2016年1月1日の段階で Windows インストーラ付きのフリーの fortran 環境のインストール方法としては MinGW-w64 のインストーラを使う方法が一番簡単なのではないかと思う。以前のエントリ(64bit の Windows 7 上でフリーの fortran コンパイラを導入して、簡単なプログラムを作成する - あらきけいすけの雑記帳)で紹介した TDM-GCC が現在、gcc のバージョン 5.1 系統で止まっていて、このバージョンでは WRITE 文でエラーが発生することが知られている(このブログに情報を下さったみなさま、ありがとうございました)。ここでは2016.1.1の時点で gcc 5.2 以上のインストールができるものを利用する。
[2020.1.1]インストーラのリンクの位置が変わったことと、

MinGW-w64 - for 32 and 64 bit Windows の導入

  1. http://sourceforge.net/projects/mingw-w64/files/?source=navbar に入る。ホームページが英語で書いてあるからってビビらないように。
    f:id:arakik10:20200102092228j:plain
    2020.1.1の画面*1
  2. このページの「ディレクトリのリスト」のすぐ下に
    MinGW-W64 Online Installer
    MinGW-W64-install.exe
    とあるので、そこをクリックする。するとインストーラのダウンロードが始まる。f:id:arakik10:20200102092648j:plain*2
  3. 「ダウンロード」フォルダの mingw-w64-install.exe をクリックする。するとソフトウェアの実行許可の後で、次のウィザードが出てくる。
  4. ここで[Next >]をクリックすると、次のウィザードが出てくる。
  5. ここで"Version"を"5.2.0"([2016.12.17追記]その時の最新版のバージョンにする)*3, "Architecture"を"x86_64"(32bitは"i686")にして*4、[Next >]をクリックすると*5、次のウィザードが出てくる。
  6. インストールするディレクトリを訊かれるが、ここはそっとそのままにしておいて[Next >]をクリックする(…として説明を続ける。[2020.1.1]Visual Studio Codegccを使ったプログラミングにもチャレンジする人は→*6)。すると次のインストール中の画面が出てくる。
  7. gcc のファイルのインストールが済むと、次の画面が出てくる。
  8. [Next >]をクリックすると次の画面が出てくる。
  9. これでインストールは完了

fortranプログラム作成環境の作成

ここではデスクトップ上に"fort"という名前のフォルダを作成して、そのフォルダで作業をすることにする。

  1. デスクトップ上に"fort"という名前のフォルダを作成して、フォルダを開く。
  2. 拡張子を表示させる:フォルダ上部の[表示]をクリックし、リボン内の右側にある[ファイル名拡張子]のチェックボックスをオンにする。
  3. 別のフォルダを開いて[PC]=>[ローカルディスク(C:)]=>[Program Files]=>[mingw-w64]=>[x86_64-5.2.0-posix-seh-rt_v4-rev1]を開く。
  4. この中にあるファイル mingw-w64.bat を fort フォルダにコピーする。
  5. fort フォルダの mingw-w64.bat を右クリックして、[編集(E)]を選択する。
  6. メモ帳が起動する([書式(O)]=>[右端で折り返す(W)]をオンにしておくとベター)。次の内容が書かれている
    echo offset PATH=C:\Program Files\mingw-w64\x86_64-5.2.0-posix-seh-rt_v4-rev1\mingw64\bin;%PATH%rem echo %PATH%rem cd "C:\Program Files\mingw-w64\x86_64-5.2.0-posix-seh-rt_v4-rev1\mingw64\bin"cd "C:\""C:\WINDOWS\system32\cmd.exe"
    …ううむ。一連の文字列を意味ごとに分解すると
    echo off
    set PATH=C:\Program Files\mingw-w64\x86_64-5.2.0-posix-seh-rt_v4-rev1\mingw64\bin;%PATH%
    rem echo %PATH%
    rem cd "C:\Program Files\mingw-w64\x86_64-5.2.0-posix-seh-rt_v4-rev1\mingw64\bin"
    cd "C:\"
    "C:\WINDOWS\system32\cmd.exe"
  7. この中の次の文字列を消して、保存する。
    cd "C:\"
    この文字列の意味は「カレントディレクトリをC:\にする」で、これを消すと現在のフォルダがカレントディレクトリになる。
  8. mingw-w64.bat をダブルクリックすると、コマンドプロンプトが起動する。コマンドプロンプトに表示されるパスが"C:\Users\[ユーザ名]\Desktop\fort"になっている。
  9. ここでコマンドプロンプトに「gfortran[enter]」と入力して「gfortran: fatal error: no input files」と表示されることを確認する。

fortran プログラムの作成

  1. fort フォルダ内で右クリックして[新規作成(X)]=>[テキスト ドキュメント]をクリック。すると「新しいテキストドキュメント.txt」ファイルができる。
  2. これをクリックするとメモ帳が立ち上がる。
  3. メモ帳で全部半角文字で次の2行を入力する
    write(*,*) 'hello, world!'
    end
  4. [ファイル(F)]→[名前をつけて保存(A)]で「ファイル名(N)」を test.f90 「ファイルの種類(T)」を「すべてのファイル」にして保存
  5. mingw-w64.batをクリックし、コマンドプロンプトを起動して「gfortran test.f90[enter]」を入力。フォルダの中に a.exe が出来る。
  6. コマンドプロンプトで「a.exe[enter]」を入力。入力の次の行に「 hello, world!」が表示される。

*1:旧画面

*2:2020.1.1改稿。旧原稿は↓
このページの「タブ」と「ディレクトリのリスト」の真ん中に

Looking for the latest version? Download Official MinGW-w64 installer (169.9 kB)
とあるので、そこをクリックする。するとインストーラのダウンロードが始まる。

*3:"Version"の"5.3.0"はなぜかコケた。x86_64の5.3.0はまだないのかなぁ?

*4:Google:x86_64 i686

*5:"Threads"(マルチスレッド環境, 一つのアプリを複数のコアで処理する方法)や"Exception"(例外処理, プログラムの実行エラー時の対処)については無頓着に進めることにする。

*6:VSCodeでのプログラミングをしたい場合は、インストールするディレクトリ名から"\Program FIles"を削って、[Next >]をクリックする。"Program FIles"という「半角スペースを含んだフォルダ名」でひっかからないようにするためである。