カテゴリー: 勉強

  • if __name__==’__main__’:

    仕事用のPythonスクリプトに手を加えたら、Read Onlyで開いたはずのファイルが書き込まれる事態が発生した。ギョッとして原因を探したら、メインの処理で使ったファイル名を示す変数がグローバル変数として扱われた結果のように思えた。

    もしそうなのであれば、C言語のように、メイン処理をmain関数として定義すれば良いように思えたので、ググってみたら、自分の推測通りだった。

    自分が読んだ記事を書いた人も同じような経験をしたことがあるそうだが、スクリプトを書き慣れている人は、そうする人が多数派らしい。痛い目に遭って初めて学んだことではあるが、自力でそういうところに辿り着いたので、良しとしておこう。

    また、(そういう使い方はしないだろうけど)importされた際の誤動作対策のおまじないも知ることができた。これからはこのスタイルで行こう。

    上記の問題を解決したら一気に進んで、当初の目的を達成できたので、気分が良い。

  • 空気抵抗中の落下

    速度に比例する抵抗を受けながらの落下について、Pythonを使って、Euler法、odeint、Runge-Kutta法の3種類の計算をやってみた。グラフは比較用の解析解を加えた4つをプロットしているけど、一目で分かる違いなんてない。ちなみにグラフは上が変位、下が速度である。まぁ、終端速度がありますね、というくらいの話である。

    しばらくプログラミングは何もしていなかったので、タイピングがどこかぎこちなくて、打ち間違いが滅茶苦茶多かったが、ようやくマシになってきた。

    横軸が時刻、高さ100から落下開始で、終端速度が-9.8。

  • Pythonで試行錯誤

    荷電粒子の計算は、一応一通りのことをやったのだが、本の内容から更に進んだことをやろうとしたら、荷電粒子間の距離が近すぎて、クーロン力が発散する状況が発生した。数値計算的には何らかの処理方法があるのだろうが、それがどんなものかは分からないし、それを調べるよりは他のことに時間を使いたいので、一先ず後回しにする。

    先に進んで、odeinfを使って微分方程式を数値的に解いてみた。1階微分なら「まぁそうなんだろうな」で終わるけど、2階微分だと、最初は何が何だかという感じである。Webで散々調べて何となく分かってきたので、もう少しあれこれやるつもりである。別にodeinfに拘る必要はないんだけど、折角出会ったのだから、一通りのことはしてみたいと思うので。あと、Pythonのスライスも初めて知った。これは使っているうちに慣れるだろう。

    こうしてみると、業務での文字列処理を念頭において「独習 Python」を購入したが、趣味の方は、以前購入した「科学技術計算のためのPython入門」の方が適切だったと、今更ながらに思う。ひょっとすると、「Pythonによる数値計算とシミュレーション」とGoogle先生だけで足りるかも知れない。

    いずれにしても、Pythonで色々なことができるようになりたいものだ。

  • クーロン力ってどっち向き?

    ここ数日、平面内の荷電粒子の運動を計算をするためにPythonでコードを書いていたのだが、明かに挙動がおかしい。参考にしている書籍と比較すると、一箇所符号が逆になっているようなのだが、その理由が分からなくて困っていた。

    何か符号に関する勘違いをしているのだろうと思い、上記書籍に繰り返して目を通していたら、最初のところに「質点の持っている電荷は−1であるとします」って書いてある…電荷は+1だと勘違いしてた…俺あるあるだ。

    その一方で、リストやタプルを使ったfor文の扱いは参考になった。最初は愚直にインデックスをつけたりしていたのだが、そうしなくてもできることなのね。自分で考えて書いたコードよりも格段にすっきりしている。

    まぁ、こうした方が知識が身に付くと考えよう。

  • 軟着陸

    今日も「Pythonによる数値計算とシミュレーション」のコードを出発点に、計算をしてみた。所定の初期条件の下に、宇宙船が軟着陸のために逆噴射した後の振る舞いを計算するというものである。要は、運動方程式の加速度に、あるタイミングで重力加速度よりも大きく逆向きの加速度が加わった場合にどうなるかという計算である。

    上記書籍では、逆噴射のタイミングを指定しているのだが、そのタイミングが丁度良いのだろうとは思うものの、そのタイミングを求める計算もしたいと思い、その辺りも計算できるコードを付け加えてみた。逆噴射のタイミングを変化させながら、座標の時間依存性(2次関数)を計算して、その最小値が負となるものの中で最大となるような逆噴射のタイミングが、軟着陸には最適で(最も衝撃が少ない)、上記書籍では予めそのタイミングを指定している、という予想である。それなりに手こずったが、予想通りの結果となって満足である。

    次は荷電粒子の運動だが、その前に電磁気学の復習が必要だ。

  • 多重ループを抜ける

    実際に使ったかどうかは記憶が定かではないのだが、多重ループを一気に抜ける場合の方法は、gotoを使うことしか知らなかった。

    ところが、である。Pythonの本を読んでいたら、elseとcontinueを使う方法と、フラグ変数を使う方法の2つが出ていて、軽く衝撃を受けた。前者はelseだけを使うという意味で、後者はC言語でもgotoより一般的な方法らしいのに、今まで知らなかったことに…

  • つまみ食いでは物足りない

    年末年始で仕事関係の本を一冊読み切った。頭の整理に役立ったと思う。

    Python、物理、深層学習、データ分析、ゲノム編集といった本にも手を伸ばしたが、いずれもつまみ食い程度でしかない。こういうことにもっと時間を使えたらなぁと思うのだが、現実を見なければいけないだろう(苦笑)

  • ケプラーの法則

    手元にある力学の本を読みながら、ケプラーの法則と運動学から何が言えるかを計算してみた。惑星は公転方向には加速されていないこと、加速度は太陽の方向を向いていて太陽からの距離の2乗に反比例すること、その係数は惑星によらないこと、である。

    こんなことを真面目に計算したのは初めてではないだろうか。量子物性ばかり面白がって、古典物理を疎かにしていたことを再認識している。

    試験勉強の合間の楽しみというだけでなく、(すぐではないが)仕事にも役に立つことなので、コツコツやって行ければ嬉しい限りだ。

  • 気付き

    先日受講終了まであと10日だと知らせが来た、財務関係のオンライン講座を修了した。まだ雰囲気を掴んだという程度なので、もう少し演習をこなす必要があるが、最低限のことはできた。修了証もPDFで発行されたので、勤め先から要求されたら出せば良いと思っている。こちらから出して仕事を詰め込まれたくない(笑)

    内容は勿論だが、講師の最後のコメントが非常に印象的だった。ビジネスマンは、売上げと利益だけではなく、投資とリターンを意識するべきであり、素人が財務会計を学ぶメリットは、ビジネスを見る視野を広げられることにある、というものである。

    投資とリターンについては、たまにそんなことを考えることもあったが、全く実践できていなかった。これまで資格の勉強にいくら費やして、どんなリターンがあったのかを考えると、非常に恥ずかしい気分になる。まぁ、知識が増えたことで五月蝿い人間を黙らせることができるようになったのはリターンだが、肝心の合格には程遠い状況なので、頑張らねばなるまい。

    ビジネスを見る視野を広げることができるということについては、実を言うと、私が財務に興味を持ったきっかけである。投資とリターンの話にも通じると思うが、私は損得勘定に疎い(脇が甘い)ところがあって、今の立場でそれはまずかろうと思い、もっとビジネス-下衆な言い方をすると金儲け-を意識するには財務の勉強が良いのではないかと思っていたのである。

    実践してナンボではあるが、内容だけでなく、良い気付きを得ることができたと思っている。

  • オンライン講座

    半日ほど、とあるオンライン講座を受講していた。サボっていたら、受講終了まであと10日だというメールが来たので、これはいかんと思った次第である(笑)

    単なる動画の視聴だけではなく、フォームに数字を入力していく作業もあり、なかなか良く出来ていると思う。自分で手と頭を動かすことで身に付くのは当たり前だが、オンライン講座の特徴を上手く活かしていると思う。集合研修や通信講座でも同じことはできると思うが、受講する側からすればお手軽だし、主催者側からすれば使い回しが利くのではないだろうか。

    ただ、ここで得た知識をどこまで業務で使うのか、少々疑問である。別の部署から手伝って欲しいという話が来た業務で使う知識なのだが、それには私が抱えている業務のいくつかを部下に振って、その分の空きを作ることが前提となっている。しかしながら、その前提は成り立っていないにも関わらず、部長がそのまま私に押し付けようとしているので、キレかかっている状況である。

    それ以外にも使い道はあるだろうという、スケベ心が学ぶ意欲の源だ(笑)