匿名希望のおでんFortranツヴァイさん太郎

生き物、Fortran、川について書く

Fortran

コマンド ライン引数の個数で処理を変えるプログラムを作る

本稿では、コマンド ライン引数の個数で処理を変えるプログラムを Fortran で作ります。作成するプログラムは以下のように動作します。 コマンド ライン引数で自然数のみを与えた場合 標準出力に与えた自然数以下の素数を列挙し、素数の個数を表示します。 …

コマンド ライン引数を用いる利点と Fortran における使用例

本稿にはコマンド ライン引数を用いることの利点、 ならびに Fortran におけるコマンド ライン引数使用の例を示しています。 私が考えるコマンド ライン引数を利用する利点は以下の通りです。 使いまわしやすいプログラムを書ける バッチ処理が可能になる 入…

mt19937ar の一部を Modern Fortran で書いてみた

統計計算を行うのに何かと乱数が必要になります。Fortran には組み込み関数として random_number() がありますが、 コンパイラによって実装が異なります*1*2。環境によって品質が変わると困るので、自分で実装したものを使うのが安全だと思います。私はメル…

分散の大きさの感覚を養う

何事も実際にやってみるのは大切です.経験することで直観が養われます.本記事は分散の大きさを感覚的に理解することが目的です.分散は平均とともに統計学で最初に習うものですから,定義を知っている人は多いでしょう,しかし,散布図を見て分散がどのく…

pack関数の使い方

Fortranの配列用組み込み関数の中にpack関数というものがあります.直観的に配列を扱うことができ,データをまとめたりする際に大変便利な関数ですpack関数は配列xの要素の内,条件を満たす要素(正確にはmaskで指定した論理型配列の成分が真である部分の要…

optional引数と論理型変数を利用して柔軟な関数を作る

配列にデータ(生物の個体数や水位など)を格納して平均を求める場合,doループを使ってもよいですが,Fortranを使うなら配列用の組み込み手続きを活用したいものです.大きさ10の整数値配列xの成分を x(:) = (/1, 2, 3, 4, 5, 6, 7, 8, 9, 10/) で与えます…

論理型(logical)変数の使い方

Fortranでは変数の型として 整数型 integer 実数型 real 倍精度実数型 double precision 複素数型 complex 倍精度複素数型 complex(kind(0d0)) 論理型 logical 文字型 character が使えます.今日の話題は論理型(logical)変数です.長い間これはどんな場合…

ifとcaseと分岐処理削除

Fortranでは分岐処理にifとcaseがあります.条件分岐が三つ以上ある場合,if文では条件を満たすまで上から順にelse ifをたどるのに対し,case文では値の評価をした後,条件を満たすところにジャンプするため,分岐が多い場合にはcaseの方が速いそうです.私…

配列演算と除算削減が計算速度向上にどの程度貢献するか

時間のかかる計算をするときには,少しでも計算が速くなるようにいろいろ工夫を施すのが普通です.いわゆるチューニングです. お手軽で効果の上がりやすい定番手法は 割り算を減らす(例:2で割る操作を0.5をかける操作に置き換える) 配列演算を利用する(…