fortran66のブログ

fortran について書きます。

2008-01-01から1年間の記事一覧

R・ペンローズ著『皇帝の新しい心』第二章より。万能チューリング機械。入力ファイル turing2.lst からチューリング機械の定義とそれが作用する対象の、二つが書かれている 0,1 の文字列(テープ)を読み込んで実行する。チューリング機械の定義とそれが作…

R・ペンローズ著『皇帝の新しい心』第二章より。自然数を連続した 1 の並びで表すとして、0 で区切られた二つの数の最大公約数をユークリッドの互除法で求める。以下の例では 6 と 8 の最大公約数を求めている。答えは 2。 PROGRAM EUC USE m_turing IMPLIC…

R・ペンローズ著『皇帝の新しい心』第二章より。 自然数を連続した 1 の並びで表すとして、それに1を加えるチューリング機械 UN+1。下の例は 4+1=5 の計算。メインプログラムでは、はじめにテープに4を表す 1 の列を与えて、テープを確認の後、チューリン…

まずは準備。 大きな十進数を二進数の文字列に変換する。十進表記のリスト(1654 桁の数)をファイルから読み込み、まずそれを一桁づつ整数配列に入れる。次にそれを二進数に直して下の桁が先に来る逆順の文字列にする。 ロジャー・ペンローズ著『皇帝の新し…

Linker Option PROGRAM www USE ifwina IMPLICIT NONE INTEGER, PARAMETER :: INTERNET_OPEN_TYPE_PRECONFIG = 0 ! // use registry configuration INTEGER, PARAMETER :: INTERNET_OPEN_TYPE_DIRECT = 1 ! // direct to net INTEGER, PARAMETER :: INTERNET…

Window 表示のミニマル。窓を開く時と窓を閉じる時に文字列表示。Window 上で右・左クリックで文字列表示。窓を閉じる。 MODULE m_sub USE ifwin CONTAINS INTEGER (LRESULT) FUNCTION MainWndProc( hWnd, mesg, wParam, lParam ) !DEC$ ATTRIBUTES STDCALL, …

昔よくみた dragon 曲線。 『C言語による 最新 アルゴリズム事典』からの移植。 PROGRAM dragon_curve USE plotter IMPLICIT NONE INTEGER, PARAMETER :: norder = 10, iright = 1, ileft = 2 INTEGER :: i, k, ip, iq INTEGER :: ifold(0:2**norder) REAL :…

2の補数表現では、増加関数として数が増えてゆきますが、ある大きさまで達すると周期境界条件の様に、負の側の絶対値最大の数に飛んでまた増加してゆきます。ここでは4バイト整数を扱いますので まで増加したところで、 へ飛びます。正の最大値と負の最小…

昔は再帰の例としてしょっちゅう見かけたもんですが。C-Curve です。 Fortranでは、なんとなく再帰は忌み嫌われていますが、たまにはいいよね。 PROGRAM c_curve USE plotter IMPLICIT NONE INTEGER :: norder WRITE(*, *) 'input order' READ(*, *) norder …

追記 3-13

uhoplot の Window を開くところでの sleep 時間が短すぎたらしい。 CALL SLEEP(100) から CALL SLEEP(500) でとりあえずよし? !---------------------------------------------------------------- SUBROUTINE gr_on(text, nx, ny) USE IFMT ! multithread…

Winsock の version 等を知る。 PROGRAM winsock USE ifwina IMPLICIT NONE INTEGER :: iret, iMaxSockets, iMaxUdpDg INTEGER (WORD) :: wVer TYPE (T_WSADATA) :: lpWSAData wVer = MAKEWORD(2, 0) iret = WSAStartUp(wVer, lpWSAData) IF (iret /= 0) STO…

とにかく、きめぇww

Mandelbrot集合 2

なつかしいマンデルブロ集合をば。 PROGRAM Mandel USE plotter IMPLICIT NONE INTEGER, PARAMETER :: kd = SELECTED_REAL_KIND(15) INTEGER, PARAMETER :: m = 1000, nwinx = 800 , nwiny = 600 INTEGER :: i, j, imax, jmax, maxiter, icount REAL (kd) ::…

Fortran90には数値の精度に関する関数がいくつか用意されています。TINY() 関数は正規数の最小値を返します。EPSILON() 関数は 1.0 に比べて無視できるような小さい数を返します。NEAREST() 関数は隣接する正規数を返します。実行結果を見ると、EPSILON() が…

統計力学などでは、よく階乗の対数を Stirling の公式で近似しますが、どのくらいの精度で近似になっているのか見てみます。ここで Stirling の公式とは、n が大きいところで、 というものです。n のオーダーに比例する項だけが問題になる時は、ここまでで十…

Fortranでインターネッツ。ping を打ってみます。 Linker のオプション。iphlpapi.lib を加える必要があります。 PROGRAM ping USE ifwin IMPLICIT NONE ! TYPE :: t_ip_option_information INTEGER (UCHAR) :: Ttl INTEGER (UCHAR) :: Tos INTEGER (UCHAR) …

Intel Visual Fortran 用の OpenGL モジュールを用いてロジスティック方程式によるカオス図形を描きます。 DEC/Compaq Visual Fortran でも実行可能だと思います。支那の王朝末期には、飢饉・戦乱で人口が大きく減るようですが、歴代支那の人口をプロットす…

iphlpapi という Win32 API を呼び出すことで Fortran でもネットワーク関連のプログラムが可能になります。しかし Intel は iphlpapi.lib 用のヘッダー・モジュールを用意してくれていないので、自分で定義を探して定数などを定義する必要があります。基本…

よくあるFortranの例題として、エラトステネスのふるいを用いた素数計算があります。 これを用いて素数の数を求め、ガウスによる素数定理を調べることにします。ここでエラトステネスのふるいとは、ヘレニズム時代のアレキサンドリアの自然学者エラトステネ…

結果

入力例 1s,2s,2p,3p軌道に固有エネルギーの理論値を代入しています。 縦軸も横軸も無い駄目駄目グラフですが、水素原子の1s,2s,2p,3p軌道の動径波動関数を書いています。 横軸の一目盛りは1ボーア半径、縦軸の単位は任意です。エネルギーの単位はハートリー…

物理雑誌の『パリティ』に、1991年2月号から9月号までフォートラン入門の記事がありました。時代的にまだFORTRAN77の内容ですが、短いプログラムで面白いテーマを扱っている連載でした。その中から水素原子に対するシュレディンガー方程式を数値的に解く問題…

奥村晴彦著『C言語による 最新 アルゴリズム事典』の「フラクタルによる画像圧縮」を移植してみました。羊歯植物のパラメータを入れています。 この本のルーチンと互換性を上げるために、uhoplotに少しサブルーチンを加えました。 MODULE plotter USE uhoplo…

昔なつかしいロジスティック関数によるカオス図形。拡大してゆくと、同じような形がどこまでもどこまでも現れます*1。 PROGRAM chaos USE uhoplot IMPLICIT NONE INTEGER, PARAMETER :: nx = 640, ny = 480, niter = 150 INTEGER :: iter, ix, iy REAL(8), P…

Fortran商品

Avocado Suiteアーティスト: Fortran 5出版社/メーカー: Muteメディア: CDこの商品を含むブログ (1件) を見る [rakuten:kkenzai:10015426:detail] [rakuten:interior3i:10001797:detail]

Fortran90入門 負の整数 二の補数表現

階乗の計算。 PROGRAM factorial IMPLICIT NONE INTEGER :: i, ifac ifac = 1 DO i = 1, 20 ifac = ifac * i PRINT *, i, '!=', ifac END DO STOP END PROGRAM FACTORIAL 実行結果 途中までは正しい結果を出しますが、13!から先は結果が狂っています。あまつ…

阿部さん しょんべん

PROGRAM kusomiso USE uhoplot CALL gr_on('Abe-san', 500, 600) CALL gr_pencol(irgb(0, 0, 0)) CALL gr_text(150, 10, 'ああ・・・つぎはションベンだ', irgb(155, 155, 0) ) CALL gr_show() ! chin chin CALL line( 0.0, 11.0, 0) CALL line( 0.0, 8.0, 1) C…

阿部さん

MODULE uho_win USE ifwina USE ifwinty USE ifmt, ONLY : RTL_CRITICAL_SECTION IMPLICIT NONE TYPE :: t_wnd INTEGER (HANDLE) :: hWnd INTEGER (HANDLE) :: hDC INTEGER (LPINT) :: hThread INTEGER :: id INTEGER (HANDLE) :: hPen CHARACTER (LEN = 80)…

コンソールからWindowを開く。

コンソールアプリから、Windowを開きます。 一般的には、メインルーチンでWinMainをCALLすればよいだけです。引数の多くはほぼ意味を持ちません。□コマンドライン引数を渡さないような最小形式のメインプログラムは以下のようになります。 =================…

Windows Program

Windows Programは、普通のコンソール型のプログラムしか作ったことの無い者には、中々理解しがたいものがあります。以前『猫でも分かるWindowsプログラミング』を買って読んで理解不能だったときは、「俺は猫以下か!」と、かなりがっかりしました。 以下に…