年: 2021年

  • 少し頭を使う

    偉い人が、自社の技術者のレベルが下がっていることを嘆いていた。一つは過去の経験に固執して新たな挑戦をしないこと、もう一つは、数学力がないことである。

    数学力についての話を聞いていると、本質は、数学に限らず自分の頭で考えていないことのように感じられた。過去の経験に基づいて仕事をすることも、楽をしたいという気持ちの現れだと思う。

    帰宅後、速度に比例する抵抗を受けながらの落下について、紙と鉛筆で計算をした。符号の向きで考え込んだりと、初歩的なところで躓いたりしたが、一通り計算して、matplotlibで解析解をプロットするところまではできた。明日以降は複数の方法で数値計算を行って、それぞれの方法を比較しようと思う。

    Pythonでプログラミングをしていると、取り敢えず本に書いてあるコードをEmacsで打ち込んでも意味はなく、真面目に理論を追い掛けたり、odeintなどの使い方を理解しないと何も残らないのだと、改めて思う。こんなことは敢えて書くまでもないかも知れないが。

    小さなことからコツコツと、である。

  • Pythonで試行錯誤

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

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

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

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

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

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

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

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

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

  • 軟着陸

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

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

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

  • とにかくやってみる

    “Don’t think. Feel!”は「燃えよドラゴン」に出てくる有名なセリフだが、”Don’t think. Move!”というのはその派生なのだろうか。いずれにしても、「ストレスフリー超大全」(樺沢紫苑)の「不安を行動で取り除く」というのはもっともな指摘である。

    「Pythonによる数値計算とシミュレーション」と「なんでもPythonプログラミング」を取っ替え引っ替え、たまに「独習Python」を読みながら、放物運動のグラフを描くところまでやってみた。敢えて本に書いてあることから逸れてみることで、理解が深まったところもある。とはいえ、独立して「趣味れーしょん」に載せるレベルには程遠いので、ここで計算結果を上げるに留めておく。45度方向に投げるのが一番遠くまで飛ぶよねという、ありきたりな結果でしかない。出射角は、青が35度、赤が45度、緑が55度である。

    「趣味れーしょん」の方は、10年間未更新になることを回避できれば良いと思っているが、あと2年ほどあるので、それは大丈夫だろう…多分(笑)

    ついでと言っては何だが、これまでMacのメモを使っていたここの下書きを、nDiaryを使っていた頃のようにEmacsに戻した。プログラミングはEmacsですることになるので、プログラミングの時間が増えるのであれば、エディタはEmacsをメインにした方が都合が良い。

    放物軌道
  • 小さなことからコツコツと

    ここ数日、Pythonで文字列の処理をしようとあれこれやっている。文字列中に、全角かなから半角英数に切り替わる箇所が複数あって、そこで文字列を分割したいのだが、今のところ、切り替わる箇所を検出して、そこにセパレータになる文字を挿入するところまでは、できている。その後にsplitを使えば良いだろう。

    次の問題は、今は上記の場所が1つだけある場合にしか対応していないので、それを複数箇所対応にすることだが、もう数日かかりそうだ。その後は、csvファイルを行毎に読み込んで、そうして得られるリストの特定の要素に、上記の処理を行うことが最終目標である。

    10年くらい真面目にプログラミングをしていないので、この程度の処理でも結構大変だし、自宅ではEmacs、職場ではxyzzyの操作が少々ぎこちない。しかしながら、色々と心に火がついた(ような気がする)し、仕事で使うためのものなので、もう一踏ん張りである。

  • 廃棄と購入

    HDD2個とEye TV HDを、小型家電のリサイクルBOXに出してきた。片道2kmの散歩であった。

    HDDの1つはTime Machineで使っていたのだが、先日動作中に異音を発したので、新しいHDDと入れ替えて、お役御免である。多分、5年以上使っていたと思う。もう一つはLinux Boxで使っていたものなので、Time Machineで使っていたものよりも古い。

    Eye TV HDは、数年前にDTCP-IP対応のソフトを導入したことで不要になったが、取り敢えずSTBとMacに接続した状態で放置されていた。Time Machine用のHDDの隣に置いてあったので、丁度良い機会だと思い、処分した次第である。

    また、やんごとなき事情でモニターのHDMIポートが一杯になりそうなので、Mac miniをDisplayportで接続するため、USB-C/Displayport変換ケーブルを注文した。

    一本ケーブルがあったと思ったて確認したら、mini-Displayport/Displayport変換ケーブルだった。Mac miniとモニター間のHDMI接続が不調の頃に買ったのだが、変換ケーブルを買ったら不具合が収まったので放置したため、間違った買い物をしていたことに今頃気がついたという、間抜けな顛末である。

  • 悪習

    他部署の人に「○○な状況ですが、敢えて××しますか?」という聞き方をしたら、「します」という回答が返ってきた。そこの部長からは、その回答した人は状況を把握していないであろうことと、要否判断は私の部署でやって欲しいことを指摘されて、ドキッとした。

    確かにそこは私から「○○な状況なので、××するのは止めます」と連絡すべきで、責任の所在を曖昧にするため相手に判断してもらおうという、業界の悪しき慣習に染まっていることを実感した瞬間だった。多くの会社でこの種の部署の地位の低さが言われているが、それは責任や判断から逃げるところにも原因があると言われており、自分も見事に当てはまっている訳だ。

    「責任は押し付けた者勝ち」な社風だが、今回の案件はそこまで気にするほどのものではない。ただただ反省である。

  • 多重ループを抜ける

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

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

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

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

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