ブックマーク / zenn.dev/kaityo256 (8)

  • プログラム、下から作るか?上から作るか?

    TL;DR プログラムは「下から組む方法」と「上から組む方法」がある プログラムを組む時は少しずつテストしながら組む はじめに なにかゼロからプログラムを組むとします。そのプログラムのアルゴリズムや、何をやるべきかはなんとなくわかっているけれど、どこから手をつけてよいかがわからず、ChatGPTに全部書かせて、その後修正できずに困る、という事例を何度か観測しています。 プログラムをゼロから書くのは慣れが必要です。プログラムをゼロから書く場合、小さな部品を一つ一つ作っていって、最後にそれらを組み上げる「下から書く」方法と、「こういう関数が必要であるはず」と外枠から書いていって最後に中身を埋める「上から書く」方法があります。その一般論を論じるのは私の能力を超えるため、以下では「下から」と「上から」の例を挙げて、その「気持ち」を説明してみようと思います。言語はなんでも良いですが、ここではPyth

    プログラム、下から作るか?上から作るか?
  • 最小二乗法の話

    はじめに 最小二乗法はデータ解析の基ですが、意外にその内容の理解が難しかったりします。特に、入力データと出力データの積の和が出てくる理由があいまいな人も多いんじゃないでしょうか。以下では、最小二乗法の公式の意味をちょっと考えてみたいと思います。 最小二乗法 何か実験をして、観測値を得ることを考えます。例えば抵抗値のわからないものに、様々な電圧をかけて、流れる電流を測ったとしましょう。 この時、入力電圧をx、出力電流をyとすると y = a x という比例関係が期待されます。この比例定数aを実験から精度よく求めたい時、どうすればよいでしょうか? 実験をN回繰り返すことにして、i番目の実験の入力電圧x_iに対し、出力電流y_iを得たとしましょう。このデータセット(x_i, y_i)を使って、最もよくaを推定したい、というのが稿の目的です。 ここで考えなくてはいけないのが「最も良くaを推定す

    最小二乗法の話
  • 見たら「ん?」となるエラーバーのグラフ

    はじめに 実験や数値計算などでエラーバーがついているグラフをよく使いますが、見ていると「ん?」となるグラフをよく見かけます。いくつか例を挙げて見ましょう。 ケース1 例えばこんなグラフがあったとします。 何かが時間に対して指数関数的に減衰していることを表しているようです。僕は発表でこういうグラフを見かけたら「ん?」と思います。 一方こちらのグラフは、少なくともエラーバーの付き方はまともです。 ケース2 もし、観測値のそれぞれに独立なノイズが乗っているのであれば、エラーバーは、観測回数を増やせば減っていくはずです。観測回数nに対して、物理量の推定値とエラーバーがどうなるかを表したグラフでこんなものがあったとします。 試行回数nを増やすにつれて、平均値は0.5に収束し、さらにエラーバーも小さくなっています。一見それっぽく見えますが、僕はこのグラフを見たら「ん?」と思います。 一方、こちらも同様

    見たら「ん?」となるエラーバーのグラフ
  • 技術記事を書く人を大事にしよう

    TL;DR 技術記事を書いて公開してくれる人は貴重な資源なので、なるべく潰さないように大事にしましょう。 はじめに プログラムを書いてて、なにかわからないことがあれば検索すると思います。すると、世の中にはごく少数の役に立つ記事と、大多数の役に立たない記事があることがわかるでしょう。その役に立つ記事を求めてネットの海をさまよっていると、「あれ?またこの人の記事だ」と思うことがよくあるでしょう。C++の言語仕様を調べてると「あの人」の、Vim関連を調べていると「あの人」の、Go言語なら「あの人」の記事を見つけることでしょう。逆に言えば、ある程度限定された分野において、体系だった知識があり、わかりやすい記事を書いてくれる人というのは極めて貴重な人材ということになります。 しかし、そんな「つよつよエンジニア」も、はじめから強かったわけではありません。当然のことながら新人時代があり、よくわかっていな

    技術記事を書く人を大事にしよう
  • スパコンによる大規模分子動力学計算の現状

    はじめに 最近、以下の新しい論文を投稿しました。 Effects of polymers on the cavitating flow around a cylinder: A Large-scale molecular dynamics analysis 高分子が円柱を過ぎる流れに対して与える影響を分子動力学法で解析したものです。私も共著者には入っていますが、筆頭著者である浅野さんが中心となって計算、解析したものです。 計算規模は、概ね100ノード20万コア5億原子100時間/1ランを複数回実行するくらいです。この論文は物理の論文ですが、稿ではこの計算の「大きさ」についてつらつら書いてみようと思います。 分子動力学法の計算コスト この論文で用いられている計算手法は分子動力学法(Molecular Dynamics method, MD)と呼ばれるもので、原子の間に働く力を計算し、位置を

    スパコンによる大規模分子動力学計算の現状
  • GitHubで講義ノートを書く

    はじめに 大学の講義ノートをいくつかGitHubで公開しています。 講義ノートをMarkdownで書いてGitHubで公開、というのをしばらく続けて、いろいろノウハウが溜まったので共有してみようと思います。 大学の講義ノートをどうするか問題 昔から大学の講義ノートを公開する人は結構多いです。最初期は、LaTeXで書いてPDFで公開することが多かったように思います。これはこれで良いのですが、基的にはダウンロードして印刷して読む前提であり、ウェブで気軽に読める形ではありませんでした。その後、LaTeX2HTMLを使って、LaTeXファイルをHTMLに変換して公開するケースが増えました。これによりウェブで講義ノートが気軽に閲覧できるようになったのですが、いかにも「LaTeX2HTMLを使って変換しました」という外観になるのと、(少なくともデフォルトでは)レスポンシブではなく、スマホ非対応になる

    GitHubで講義ノートを書く
  • 「バニラ」の起源について

    IBMのBookMasterでは、デフォルトを"vanilla"、特別な設定を"mocha"と呼んでいたらしい。 http://web.archive.org/web/20211224091337/ftp://public.dhe.ibm.com/printers/products/dcf/samples/B2H.HTM 「Chapter 6. Caveats and restrictions (what's supported and what's not!)」に以下の記述がある。 Conditional sections (.cs) and BookMaster's "vanilla" DVCF macros (.CONFIG and .WHEN) are supported, but not BookMaster's "mocha" DVCF macros (e.g. .USING,

    「バニラ」の起源について
  • Gitのオブジェクトの中身

    はじめに Gitのインデックスの中身、Gitのブランチの実装に続く、Gitの中身を見てみようシリーズです。Gitが管理するオブジェクトの種類や中身について見てみます。基的にはPro Gitの10. Gitの内側をまとめなおしたものです。 オブジェクトの種類 Gitは、内部でファイルやコミットを「オブジェクト」として.git/objects以下に保存しています。オブジェクトには以下の4種類があります。 blobオブジェクト: ファイルを圧縮したもの。ファイルシステムの「ファイル」に対応 treeオブジェクト: Blobオブジェクトや別のTreeオブジェクトを管理する。ファイルシステムの「ディレクトリ」に対応 コミットオブジェクト: Treeオブジェクトを包んだもの。コミットのスナップショットに対応するTreeオブジェクトに、親コミット、コミットメッセージなどを付加する タグオブジェクト:

    Gitのオブジェクトの中身
  • 1