アフィリエイト広告を利用しています

広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

2021年01月07日

windows10でfortranの複素数のプログラミング

昔のスペクトル解析の専門書の巻末に書かれた
fortranのプログラムをwindows10のsurface proで回すために始めた勉強は、
現在、本の巻末の例題を3つ再現できたところである。
(ここには書かないが。)

次は複素数の計算が出てきたのでfortranの複素数のプログラミングを
調べて覚える。
(複素数のコードの書き方知らないと覚えようとしている
 複素数の高速フーリエ変換はできないから。)
あぁ、、とうとう自分は複素数の計算をプログラミングできるように
なるのだ、、。
大学受験の時に複素数の問題は解けたけど、
大学の専門分野の講義の時は複素数を使った技術計算は
よく理解できなかった。そんな13〜14年前にできなかったことを
今日、明日で超えれるのだと思うと感慨深い。いつの歳になっても
日々勉強である。

で、調べると下記サイトを見つける。
>大気海洋科学のための計算機講習会
>稲津 將(北海道大学地球環境科学研究科)
>Fortran 複素数
https://www.sci.hokudai.ac.jp/~inaz/doc/B/Education/node6.html

複素数の変数の宣言の仕方は分かった。

次に、プログラミングの前に複素数の足し算、引き算、掛け算、割り算
をおさらいせねば。
足し算、引き算は実部、虚部をそのまま足し引きするだけだが、
掛け算、割り算ってどうやるのだったか、、。
もう13、14年も経っているから覚えてない。

で、検索すると下記のサイトが出てきた。

>マナペディア
>複素数の四則計算
>OKボーイ
https://manapedia.jp/text/52

割り算がちょっと面倒だな。
分母に共役複素数を掛けてたか。

ではfortranの
・足し算、引き算、掛け算、割り算
・共益複素数を出力するconjg関数
・2乗(x^2)
・指数関数(e^x)
を試してみる。
下記のようにコードを書いてみた。

(1〜27行目)
固定形式_22.JPG

(28〜51行目)
固定形式_23.JPG

その際、複素数のformat文は
どうやって書けばいいか分からなかったので
下記のサイトを参考にした。
(実部、虚部をコンマで区切ってカッコで囲めばいい)

>早稲田大学 理工情報関連科目・情報教育ウェブサイト FORTRANプログラミング入門
>2019年度春学期・Fortranプログラミング入門
>Format文の書式
http://www-it.sci.waseda.ac.jp/FPR1/class02/Fortran/Japan/3_2fmt.pdf

ついでに下記のURLを貼っておこう。
(C、Fortran、JAVAのプログラミング言語の講義が聴けるから。)
>早稲田大学理工メディアセンター
http://www.waseda.jp/mse/web/infotechedu/

で、回した結果は下記。

固定形式_24.JPG

よしよし、うまくいった。

同じ計算をエクセルでやったのが下記。
数値も合っている。

固定形式_25.JPG

※指数関数部分はIMEXP関数にCOMPLEX関数の複素数を代入し、
 その実部と虚部をそれぞれIMREAL関数、IMAGINARY関数で
 セルに出力した。

これで、複素数のコードに必要な内容は把握できただろう。

(追記)
実数、整数から複素数を作るcmplx関数が必要だったので追記する。

cmplx関数がないと、
整数または実数変数を組み合わせて複素数を作ることができない。
c=(a,2.0)やc=(a,b)とするとエラーになる。
(数値だけならいけるが、変数が入るとカッコだけではだめになる。)
c=cmplx(a,2.0)やc=cmplx(a,b)とするとエラーでなくなる。

それを使って下記のコードを書いた。

固定形式_26.JPG

で実行すると下記のようになる。

固定形式_27.JPG

posted by iyoder at 00:46 | Comment(0) | TrackBack(0) | プログラム
最新記事
<< 2021年01月 >>
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
カテゴリーアーカイブ
ファン
プロフィール
最新コメント
×

この広告は30日以上新しい記事の更新がないブログに表示されております。