マンデルブログ

主にPythonのことを書いていきます。

Tips:if文を使わずに周期境界条件

今頃気づいた

今までプログラムで周期境界条件にしたいとき、
いちいちif文を使って細かく条件分岐させていたのですが、
そんなことしないで簡単にできる方法があったので書いておきます。

量子モンテカルロ法の授業で聞いたことなんですが、
実際に使うまで意識してませんでした。
僕が知らなかっただけで、他の人にとってはたぶん当たり前のことです。

周期境界条件

例えば、y方向にだけ周期境界条件をかす場合はこうなります。

x1, y1 = [ x, ( y+1 + L) % L]
x2, y2 = [ x, ( y-1 + L) % L]

なんで周期になるかは、ちょっと頭で考えてみたらすぐわかると思います。

Juliaに手を出す

Pythonのことを書くと言っていましたが、前から気になっていたJuliaも勉強していこうと思います。

Juliaとは

JuliaはPythonと同じような動的型付けの言語でありながら、C言語などの静的言語にも勝る速さを持ち
しかもPythonのライブラリを呼び出すこともできるという夢のような言語です。

詳しくはこちら

Juliaのインストール方法、基本的な使い方については詳しく説明してくれている人がたくさんいると思うので割愛します。

まずはお約束

print("Hello world") #Hello world

ちょこっと使ってみる

研究室の後輩にプログラミングの演習問題が出ていたので、それをやってみます。
問題は、一次元拡散方程式
\frac{\partial u}{\partial t} = D \frac{\partial ^2 u}{\partial x^2}
を数値的に解くというものです。

using PyPlot
dx = 0.01
dt = 0.0001
D = 0.1
λ = D*dt / (dx*dx)

Juliaではギリシャ文字を変数にすることができます。

init_u = zeros(100)
init_u[50] = 1/dx
next_u = zeros(100)

Pythonでいうnumpy.zeros()がデフォルトで使えるようです。

step = (3/dt)
for i in 1:step+1
    t = i * dt
    for j in 2:length(init_u)-1
        next_u[j] = init_u[j] + λ*(init_u[j-1] - 2init_u[j] + init_u[j+1])
    end    
    if t == 1. || t == 2. || t == 3.
        print(init_u)
        PyPlot.plot(init_u)
    end
    init_u = next_u
end

Pythonではfor文使うと負けでしたが、Juliaはfor文がめっちゃ早いです。
ガンガン使えます。

f:id:woodhero0908:20180802011811j:plain

凡例を忘れましたが、上から順にt=1,t=2,t=3のときの値です。
まあまあ簡単にできたんじゃないでしょうか。次はもうちょっと複雑なプログラムも組んでみます。

第63回物性若手夏の学校に行ってきました③

今回で全部終わらせたいところです。

4日目

この日も7時頃に起床。今までで一番パッと起きれた気がする。同室の人と朝食へ。朝食の量が少なすぎて突っ込まれた。

朝食後は最後の講義に行く。夏学もほとんど終わりということかいつもの半分くらいの人しか出ていなかったが、結構興味深い話を聞けた。しかし、講義の後半は集中力が切れてきてぼーっとしてしまった。

この日の昼食はチキン南蛮だった。トンカツ、ハンバーグと続いたので最後の昼食はステーキじゃないかと話していたのだが、見事に外れた。

最終日の午後①はフリーセッション。なのだが、興味がある発表をしていた人に限っていなかったり、他の人と盛り上がっていたりして、フリーセッションでフリーになっていた(これは先輩に言われたことである)。同じく暇そうにしていた同室のTさんに捕まり、GSのように二人で自分の研究内容について話した。

翌日に台風が関東・東海地方に直撃することになっていて関東から来た人たちが先に帰っていた。僕は飛行機なので先に帰ることはできなかったのだが、明日飛行機が飛ぶのかずっと気がかりだった。

午後②は二度目の集中ゼミ。モンテカルロ法に関する講義を受けた。これまではあんまり自分に関係ないと思っていたモンテカルロ法だが、ちょっと使ってみようかなと思った。

夕食はまた量が多かった。同室の人と食べたのだがみんな今日は量が多めだねって言っていた。気を使ってくれたのかもしれない。

夕食後部屋に戻ると、残った人たちで人狼をすることに。今回は自分も参加した。30分ほど盛り上がり、閉会式の時間になったので会場に移動。

閉会式は表彰式が中心でそれほど書くことはないのだが、チェックアウト時、女子に防犯ブザーを返却するようアナウンスがあると、防犯ブザー?!というように会場がざわざわして面白かった。

閉会式後そのまま懇親会へ。台風の影響で結構な人数が先に帰ったようで、心なしか会場がスカスカしているような感じだった。講師の先生方はだいたい午後には帰っていたようだが、千葉さんだけはこの日の懇談会までしっかり参加していた。最後の懇親会であるからみんなだいぶはっちゃけるだろうとなって、乾杯した後は早々に切り上げた。

部屋に戻りお風呂へ行った。最終日にはゆっくり温泉に浸かろうと思っていたので、混んでいない時間を狙っていった。さすがに露天風呂までは行かなかったが、中の広い湯舟でも気持ちよかった。

就寝まで部屋でだべりながらダラダラした。(夏学後半で何故か同室の人とだいぶ仲良くなり、何人かと連絡先も交換した。)

このいびきに悩まされるのも最後かと思いつつ寝たのだが、この日はいびきが二ヶ所から聞こえてきてさらに辛かった。いびきの周期もも同期するのだろうかなど考えながら眠りについた。

5日目

この日は最後の朝だからかみんな7時過ぎに起きていた。ゆっくり朝食をとり、荷物をまとめた。

蒲郡駅までのバスは混むから早めに出て欲しいとスタッフの方から言われ、急いでチェックアウト。無事チェックアウト出来た後、ホテルのお土産屋さんでお土産を購入した。会計をしているともうバスが出発する寸前になっていて急いで乗り込んだ。

蒲郡駅で同室のみんなと別れた。前日にSuica買って帰ればいいじゃんという話をしていたのだが、蒲郡駅金山駅JR東海で買えないらしい。

蒲郡駅から金山駅へ。窓側に座っていたので金山駅に着きそうになると、隣のおじさんに「すいません。次で降りるので。」と言って通路に出たのだが、「まだ全然つかないよ。」と言われた。そうなんですかと流したが、2分もしないうちに金山駅についた。あのおじさんは僕がどこで降りると思ったのだろう。

金山駅から中部国際空港へ行くのだが、少し時間があったのでSuicaを帰る場所がないか探すためうろうろした。窓口のようなところがあったので駅員さんに聞いてみると、前述したようなことを丁寧に教えてくれた。すいません、田舎者なもので。と言っておけば何を聞いてもいいだろうと思っていたので結構思い切っていた。

中部国際空港へ着くとすぐに自動チェックインし、荷物を預ける前に残りのお土産を購入。洋菓子系にしたのだが、定番の赤福買ったほうがよかったかななんて思ったが、赤福は伊勢じゃん。俺が行ったの愛知じゃん。と考えて一人納得していた。

荷物を預けてお昼を食べることに。空港の4階にレストラン街があったので、とりあえず一週してみた。中央のスペースではポケモンプラレールのイベントをしていて、ちびっこたちが盛り上がっていた。お店を全て見たのだが、実は前日からラーメンを食べるつもりでいた。ラーメン屋さんも3つあって少し悩んだが、麺達というお店でとんこつラーメンを食べた。日頃とんこつラーメンは食べないのだが結構美味しかった。

昼食を食べたものの出発時刻まで2時間ほどあったので、また空港内をぶらぶらしていた。とりあえず座れるところが見つかったので、休憩しながら時間を潰していたら、後のバスで来たと思われる同じ大学のIさんとYさん(TK大に行ったYさんとは別の人)に会った。二人とも早い時間の便に振り替え出来たようで、無事帰れることになったそうだ。

僕の便は2人より30分ほど早い時間だったので、先に保安検査場へ。10分ほど遅れたものの無事出発した。小説を読んでしまっていたので特にやることがなく眠っとけばいいかーと思っていたのだが結局眠れず。スマホ青空文庫芥川龍之介の「河童」を読んだり(前に読み始めて読みかけだった)、窓の外を眺めたりして時間を潰した。

那覇空港に着くと西日が差していた。ジリジリと肌を焦がすような熱線が沖縄に帰ってきたことを実感させた。湿気は思ったより感じなかった。

高速バスの時間まで少しあったので、空港内で時間を潰した。バスに乗り込むと後の便に乗ってきたIさんが乗り込んできた。

終わり

第63回物性若手夏の学校に行ってきました②

2日目

朝4時半頃、Tさんがジョギングに出発するときに目が覚める。もちろん二度寝。7時前にみんなが起き出した。もっとみんな遅く起きるもんだと思ってたから驚いた。

朝食はバイキング形式。同じ部屋の人と食べた。美味しかったが二日酔いのせいで食欲がわかず少し残した。

2日目から午前中は講義がある。当初は千葉さんの講義を取る予定だったが、テキストを見てより専門に近そうな生物物理学の講義を受けることにした。講義中は結構眠かったのだが、なんとか寝ずに講義を受けた。

お昼はトンカツ。夕食よりは少なめだったが、僕にはそれくらいがちょうどよかった。

午後はまずポスターセッションがあった。自分の専門分野の発表は少なかったものの、いくつか面白そうな研究の発表を聞いた。その中でW大のT君と会った。T君の研究室はうちのボスの卒業した研究室だった。H君の発表もこの日だったので聞くつもりだったのだが、タイミングが悪く聞けなかった。

ポスターセッションのあとは集中ゼミ。テンソルネットワークについての講義を聞きに行った。講師が社会物理学で博士号を取ったとのことで、おっと思ったのだが内容は全く関係のない分野の話で、ほとんど意味がわからなかった。後半はひたすら眠かった。

夕食はまた量が多かった。ちょっとこの辺は記憶があやふやなので飛ばす。お風呂に入ったあとは座談会。

座談会は地下二階の宴会場であった。講師4人が学生からの質問に答えてくれるというもので、とても面白かった。印象に残った質問と答えをざっと書いておく。

質問「研究しないといけないが眠いときは徹夜しますか?それとも潔く寝ますか?」

千葉さん「僕は夢の中でも数学ができるので」

質問「研究で失敗したことはあるか?」

千葉さん「研究では失敗したことはないがお酒の失敗はたくさんある。」

質問「入試問題はどうやって作るのか?」

金子さん「もちろん秘密です。」

千葉さんのエピソードトークがすごい面白かったのだが、お酒が入っていたので詳細を覚えていないし、文で読んでも面白くなさそうなので割愛させていただく。

座談会終了後はそのまま懇談会に。W大のTさんと話した。写真を撮ってほしいと言われ、2人で写真を撮った。研究室内の近況報告的なものに乗せるらしい。そのあとは自分の研究の話などをした。Tさんと別れたあとは、同じ大学の先輩のIさんとYさんが一緒に飲んでいたので混ぜてもらう。Iさんがかなり出来上がっていた。昨日飲み過ぎていたので、この日は控えめにした。

23時頃部屋に戻る。24時頃就寝。この日はいびきに悩まされる前に眠った気がする。

3日目

この日は疲れが出てきたこともあり、あまり覚えてない感じ。

この日も7時前に起床。昨日の反省を生かして朝食バイキングは少なめに取った。

飲酒量を抑えたおかげで、講義は昨日より眠気がなく元気に受けられた。細胞の中にあるタンパク質にもジップの法則が成り立つという話が印象的だった。

お昼はハンバーグ。なぜかお昼ご飯のおかずは毎回冷たかった。準備から食べるまでに結構時間がたっていたのだろうか?

午後はポスターセッションから。はじめは同室の人の話を聞いて回った。T大で生物物理をやっているH君の話が面白かった。Iさんの話を聞こうとタイミングをうかがいながら会場をぐるぐるしていたのだが、自分の分野がマイナーであるため、興味がある発表は少なく時間を持て余した。ようやくIさんの話を聞いたのち、一緒にYさんのところへ。お二人ともすごい研究をされててめっちゃすげぇって感じだった。

3日目の午後②は分科会。聞きたい発表が散らばっていてどうしようかと思っていたが、発表間に思っていたより時間があったので、ちょこちょこ移動しながら聞いた。W大のTさんが蔵本モデル関連の研究発表をしていたのだが、千葉さんは柱の陰にいて見えなかった。Tさんが「千葉先生がいらっしゃらないと思って安心していたのですが、そちらにいたんですね」と言うと、千葉さんが柱の陰から顔を出してみんなに手を振っていたのが面白かった。

そのあとは夕食。多いわ。もういいわ。割愛。

入浴後懇談会へ。同室の人が人狼で盛り上がっていたのだが、僕は疲れていたので懇談会までダラダラしていた。この日は座談会もないので、結構人がいなかった。同室のT大Y君と話していたら(自己紹介のときに面白い勘違いが起きたのだが大学名が出さないと面白くないので省略)、一緒に呼ばれ東大の人に囲まれてタイムボムと言うカードゲームをすることに。頭を使うようなゲームなのだが、みんなお酒を飲んでいるのにかなり頭が回っていてさすが東大生だなって感じだった。

23時頃に部屋へ。24時頃就寝。
ちなみにM大のTさんはこの日も朝4時半からジョギングに行っていた。
てか、TさんHさんYさん多すぎん?

第63回物性若手夏の学校に行ってきました①

お久しぶりです。
7月24日から28日にかけて第63回物性若手夏の学校に参加してきました。

何回かに分けて参加してみての感想、レポート?、日記?を書こうと思います。

続きを読む

Pythonで弾道軌道凝集ーお餅が空から降ってくるー

弾道軌道凝集とは

習字紙に墨汁を一滴垂らすと、黒いシミがじわじわと広がっていきます。このとき、墨汁によって黒くなった場所のぎざぎざとした境界線は、少しづつ形を変えながら広がっていきます。これを「成長する荒れた界面」といいます。
この「成長する荒れた界面」を計算機シミュレーションで模するために作られたモデルの1つが弾道軌道凝集です。

続きを読む