読者です 読者をやめる 読者になる 読者になる

ジョセフの日記

Haskellのこととか日常のこととか

数学科合宿問題 問題番号4

Haskell

 

先日、数学科の主催する数学の面白い問題を解く合宿に物理学科ではあるが参加させて頂いた。数学科の先生方には、色々と良くして貰っています。ありがたいです。
今回はちょっと数式がいっぱい出てきてゴチャゴチャするので、コードだけが気になる人は流し読みでも構いません。
続きを読むからどうぞ

続きを読む

竹内関数の可視化(WIP)

Haskell

遅延評価をあまり良く知らないのですが、Haskellはその遅延評価という性質のために竹内関数という次で定義される関数を単純なコードで高速に解けるらしいです。(竹内関数 - Wikipedia)

f:id:josephbake:20170125180634p:plain

Haskell再帰的な関数も簡単に扱えるので、なるほど確かに定義そのままを書くだけで高速であるだろうプログラムが書けました。比較対象はないので遅くはないだろう、程度ですが。

そして下のリンクに貼らせていただいた方は、なんとこの竹内関数の引数の挙動を音楽にするというプログラムを書いていました。非常にすごいです。こんなに音楽らしくなるのかと感心してしまいました。

d.hatena.ne.jp

最近はGlossの勉強もしていますし、引数は3つ。カラーコードも引数が3つです。じゃあ可視化してみようかな。そんな感じで書いてみました。竹内関数の引数を扱おうとなると、膨大なデータ量になってしまいどのようにデータ処理をしようか考えてみたところ、それならある長さまでの引数の三つ組を要素に持つリスト作ればいいじゃんと思いつきました。

できたのは良いのですが、正直出来たのかどうかが判別がし難いです。暫定版としてアップしておいて、これが正解であるわけではないということを断っておきます。後々、またこれの修正版を書こうと思います。

上でも書きました通り、使用パッケージはGlossです。

続きを読むからどうぞ。

続きを読む

練習プログラムその2(Haskellでルンゲクッタ)

Haskell

これでも一応大学で物理を学んでいるので、何かしらの数値計算プログラムは作って損はないかなと思って作りました。二階微分方程式をルンゲクッタでぶん回すプログラムです。肝心のプログラムの方はgist(って言えば良いのか?)に置きます。

現在、分子動力学法のプログラムも書いているのですが、ちょっと面倒くさいところが数カ所あるので停滞してます。ちゃんと書かないととは思うんですが、如何せんwxHaskellの導入に手こずっておりまして……

前回のプログラム、型の定義とかほざいていますがアレは真似しないほうが良いと思います。なにせ未だによく分かっていない。きっと使い方が上手くない例ですね。

ソースコードと使用例をどうぞ。強制振動項を加えた調和振動子数値計算です。

続きを読むからどうぞ。

続きを読む

練習プログラムその1

Haskell

Haskellを触り始めて1週間経って居ない頃だろうかに書いたプログラムです。

やりたかったことは、

です。入力した数値だけある文字列を表示させるが、表示させる度に別の文字列をひっつけていくって感じのプログラムを目標に作りました。

今回はこちらで投稿しますが、もうちょっと長いプログラムとかちゃんと備忘録として残したいプログラムは Qiitaの方にでも投稿しようかなと思ってます。

やっぱりgitsの方に投げつけます。

続きを読むからどうぞ。

続きを読む

三日坊主にならないように

頑張ります

最初だけブーストかけて色々書いたら、すぐに書くことが無くなって本当に三日坊主になり兼ねないので、ゆっくり今までのHaskellライフ(現時点で1ヶ月半)を綴っていきたいと思ってます。

明日は僕がHaskellで(独力で)書いたクソカス練習プログラムを載せる予定です。クォリティはお察し。