新規記事の投稿を行うことで、非表示にすることが可能です。
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行目)
(28〜51行目)
その際、複素数の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/
で、回した結果は下記。
よしよし、うまくいった。
同じ計算をエクセルでやったのが下記。
数値も合っている。
※指数関数部分はIMEXP関数にCOMPLEX関数の複素数を代入し、
その実部と虚部をそれぞれIMREAL関数、IMAGINARY関数で
セルに出力した。
これで、複素数のコードに必要な内容は把握できただろう。
(追記)
実数、整数から複素数を作るcmplx関数が必要だったので追記する。
cmplx関数がないと、
整数または実数変数を組み合わせて複素数を作ることができない。
c=(a,2.0)やc=(a,b)とするとエラーになる。
(数値だけならいけるが、変数が入るとカッコだけではだめになる。)
c=cmplx(a,2.0)やc=cmplx(a,b)とするとエラーでなくなる。
それを使って下記のコードを書いた。
で実行すると下記のようになる。
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行目)
(28〜51行目)
その際、複素数の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/
で、回した結果は下記。
よしよし、うまくいった。
同じ計算をエクセルでやったのが下記。
数値も合っている。
※指数関数部分はIMEXP関数にCOMPLEX関数の複素数を代入し、
その実部と虚部をそれぞれIMREAL関数、IMAGINARY関数で
セルに出力した。
これで、複素数のコードに必要な内容は把握できただろう。
(追記)
実数、整数から複素数を作るcmplx関数が必要だったので追記する。
cmplx関数がないと、
整数または実数変数を組み合わせて複素数を作ることができない。
c=(a,2.0)やc=(a,b)とするとエラーになる。
(数値だけならいけるが、変数が入るとカッコだけではだめになる。)
c=cmplx(a,2.0)やc=cmplx(a,b)とするとエラーでなくなる。
それを使って下記のコードを書いた。
で実行すると下記のようになる。
2021年01月02日
fortranのformat文覚える
windows10で化石言語であるfortranを回す。
古い本の巻末に書かれているプログラムを読むべく始めたが、
1個書けた。で回った。
(ここにはソースは書かないが。)
1個読めたら全部読めるね。
複数例題が書いてあっても同じ著者がプログラムを書いてるから。
英語とかと違ってプログラムはコードに使っているキーワードが少ないんだよな。
ただ、1個引っかかったのが、
本質的な計算部分ではなく、
画面やテキストファイルに出力する際の
書式のformat文である。
普通はformatの中は数値の全桁数、小数点以下の桁数が
書いてあるはずだが、
本の巻末のプログラムだと、
format文の中に文字が書いてあり、その文字が見出しの様に
画面やファイルにも出力されている。
この形式をマスターせねば本の巻末のプログラムを覚えたことにはならない。
で、下記のサイトを参考にした。
>福岡大学電気工学科
>FORTRAN 言語の構文
>http://tepe.tec.fukuoka-u.ac.jp/HP98/studfile/ssm/ssmdata/ssm-08.pdf
で、自分も書いてみた。
で、回した結果は下記。
うん。本の巻末のプログラムもこれで読めるかな。
format文にスラッシュ( / )入れると改行もできるんだな。
で、本の巻末のプログラムを見返した。
なんかformat文に「 TR5 」とか、「 T 」とかある。
これはなんだ。
検索するもなかなか出てこない。
途中で、どうやらformatの記号のアルファベットは
「編集記述子」と言うようだ。
「 f8.3 」とかは「F形式の編集記述子」または「F形編集記述子」と言うらしい。
ということで「T形編集記述子」で検索したら下記のサイトが引っかかった。
>東京理科大学 山本研究室ホームページ
>Fortranマニュアル 入出力編集
>https://www.rs.kagu.tus.ac.jp/yama/f90/FORMAT.html
上記サイトを参考に、さっきのコードを改造してみた。
で、回してみるとこんな感じ。
令和の時代にFortranの勉強をしているのは自分くらいだろうな。
でも、専門の本ってどんどん古くなる。
新しく発売される本には式の根拠とか、基準値の理由とか書いてないんだよな。
プラグラミングもブラックボックス。
計算根拠が分かっている人はどんどん定年になり、退職していく。
ちょっとでいいからそういう根拠とかが分かったらいいなと思う。
(追記)
もう1回、本の巻末のプログラムを見返したら、
配列をDo文を使わずにformat文の書式だけで羅列している。
こんな機能があるんだな。
で、自分もさっきのコードの一番下に配列をDo文を使わずに羅列して書いてみる。
で、実行して結果を出力してみる。
よしよし。
format文をマスターしたぞ。
write文の横が数値だけになってすっきりしたな。
古い本の巻末に書かれているプログラムを読むべく始めたが、
1個書けた。で回った。
(ここにはソースは書かないが。)
1個読めたら全部読めるね。
複数例題が書いてあっても同じ著者がプログラムを書いてるから。
英語とかと違ってプログラムはコードに使っているキーワードが少ないんだよな。
ただ、1個引っかかったのが、
本質的な計算部分ではなく、
画面やテキストファイルに出力する際の
書式のformat文である。
普通はformatの中は数値の全桁数、小数点以下の桁数が
書いてあるはずだが、
本の巻末のプログラムだと、
format文の中に文字が書いてあり、その文字が見出しの様に
画面やファイルにも出力されている。
この形式をマスターせねば本の巻末のプログラムを覚えたことにはならない。
で、下記のサイトを参考にした。
>福岡大学電気工学科
>FORTRAN 言語の構文
>http://tepe.tec.fukuoka-u.ac.jp/HP98/studfile/ssm/ssmdata/ssm-08.pdf
で、自分も書いてみた。
で、回した結果は下記。
うん。本の巻末のプログラムもこれで読めるかな。
format文にスラッシュ( / )入れると改行もできるんだな。
で、本の巻末のプログラムを見返した。
なんかformat文に「 TR5 」とか、「 T 」とかある。
これはなんだ。
検索するもなかなか出てこない。
途中で、どうやらformatの記号のアルファベットは
「編集記述子」と言うようだ。
「 f8.3 」とかは「F形式の編集記述子」または「F形編集記述子」と言うらしい。
ということで「T形編集記述子」で検索したら下記のサイトが引っかかった。
>東京理科大学 山本研究室ホームページ
>Fortranマニュアル 入出力編集
>https://www.rs.kagu.tus.ac.jp/yama/f90/FORMAT.html
上記サイトを参考に、さっきのコードを改造してみた。
で、回してみるとこんな感じ。
令和の時代にFortranの勉強をしているのは自分くらいだろうな。
でも、専門の本ってどんどん古くなる。
新しく発売される本には式の根拠とか、基準値の理由とか書いてないんだよな。
プラグラミングもブラックボックス。
計算根拠が分かっている人はどんどん定年になり、退職していく。
ちょっとでいいからそういう根拠とかが分かったらいいなと思う。
(追記)
もう1回、本の巻末のプログラムを見返したら、
配列をDo文を使わずにformat文の書式だけで羅列している。
こんな機能があるんだな。
で、自分もさっきのコードの一番下に配列をDo文を使わずに羅列して書いてみる。
で、実行して結果を出力してみる。
よしよし。
format文をマスターしたぞ。
write文の横が数値だけになってすっきりしたな。
2021年01月01日
将棋覚えたい
自分は先のことが考えられない。
もう少し言うと「先の先」のことを考えるのが苦手だ。
「これをするとどうなるか」は想像してぼんやり答えれるけど、
「これをするとこうなって、その次にこうなって、その次にこうなって、、」
を順序立てて考えるのは不得手だ。
一方、起こったことを思い出すのは得意である。
よく覚えているね、と言われる。
Gメールなり、evernoteなり検索すれば思い出すヒントは出てくる時代であり、
もしかしたら自分の人間としての記憶力は年齢とともに下がっているかもしれないが。
先のことを「順序だてて」とか「論理的に」考えるのは苦手である。
複数パターンとかもできない。
でも、こういうのって、一定のレベルなら「慣れ」「訓練」で
多少は出来るようになる気がする。
とりあえず、1月1日なので、将棋をしてみることにした。
(昔おばあちゃんの家で百人一首とか将棋とかしてたから。
自分はオセロをしてて、将棋は他の人がやってるのを見てるだけだった。)
最も好きな漫画である「NARUTO」のシカマルのイメージである。
先のことを頭の中で順番に考えることを覚えたいのだ。
(プログラミングだけやっててもしんどいので気晴らしである)
こういうのはゲーム感覚でやるのがきっといいのだろう。
遊びから楽しんで覚えるのだ。
どこでもできる方がいいのでiphoneアプリでやることにする。
で、選んだのが下記のアプリ。
>App Storeプレビュー
>詰将棋 神の1手【初級編】-将棋が上達する無料1手詰み将棋ゲーム
>https://apps.apple.com/jp/app/jie-jiang-qi-shenno1shou-chu/id1145170346
※今、書いていて思ったが「初級編」とあるから、続編があるのか?
神の一手って、、碁のイメージだけど、、。
でも藤井聡太棋聖の将棋でも神の一手という言葉がよく聞かれるな。
タイトル画面はこんな感じ。
ゲーム画面はこんな感じ。
1手だけの詰め将棋が50問ある。
1手だけなら初めての自分でも気軽にできた。
せっかくなので50問全部解いてみた。(下記が全部終わった画面)
よい頭の体操になった。
しばらく詰将棋を趣味にしよう。
※最近、youtubeだけ見てても、最近見るものが減ってきた。
新しいのがアップロードされるより、自分が見る量が上回ってしまった。
このままではつまらない時間が増えてしまうが、
youtube、プログラミング、詰将棋、3つあったら多少改善されるだろう。
(追記)
勢い余って、次のアプリを始めた。
>詰将棋
>UNBARANCE Corporation
>https://www.unbalance.co.jp/sp/app/tsumes/
500円の有料アプリである。
いや、、今だけ110円と書かれている。(1/11までらしい。)
知らずにポチっとしていた。。
有料とか関係ない。
求めているのは自分にあった詰将棋アプリである。
色々他のアプリもダウンロードしたが、
無料のアプリは広告がうざいので有料でも全くかまわない。
(無料のものは1日の回数制限まであるものもある。
なんで回数を制限されないといけないのか。。。)
で、この有料詰将棋アプリのタイトル画面は下記画像。
操作画面はこんな感じ。
このアプリの一手詰の17問をすべて終わらせた。
(全然自慢にはならない。むしろ恥ずかしいが。)
完了状態の画面が下記画像。
次は三手詰になるのか。
一気に難しい、、というかできる気がしない。
(先の先を読めないからこれを始めたのだから。)
しばらく格闘は続く。
(追記その2)
三手詰も全42問終えた、、、。
将棋のプロは天才だな。。
1手先もなかなか読めねえ。。
いい頭の体操になったな。。
(追記その3)
そのままyoutube見る合間に将棋をやってみた。
5手詰を12問までやった。
結構、がんばった。
ただ、詰将棋ばかりやっても、
自分がどれくらいやれるのか実戦しないと分からない。
なので、実戦用のアプリをインストールした。
>AI将棋 ZERO
>https://apps.apple.com/jp/app/ai%E5%B0%86%E6%A3%8B-zero/id1325489888
タイトル画面はこんな感じ。
で、自分はほぼ初めてだから、
入門編でやってみた。
で、結果、勝った!やったね。
詰将棋やった分はちょっとだけ活きたな。
※正月の深夜に何やってんだろう。。
で、勝った時の画面を記念に残した。
持ち駒いっぱいあるな。。。取りすぎだな。
相手の飛車、角がすごい怖いんだよな。。取らないと安心できなかった。
これじゃ入門編でしか勝てないな。。
もう少し言うと「先の先」のことを考えるのが苦手だ。
「これをするとどうなるか」は想像してぼんやり答えれるけど、
「これをするとこうなって、その次にこうなって、その次にこうなって、、」
を順序立てて考えるのは不得手だ。
一方、起こったことを思い出すのは得意である。
よく覚えているね、と言われる。
Gメールなり、evernoteなり検索すれば思い出すヒントは出てくる時代であり、
もしかしたら自分の人間としての記憶力は年齢とともに下がっているかもしれないが。
先のことを「順序だてて」とか「論理的に」考えるのは苦手である。
複数パターンとかもできない。
でも、こういうのって、一定のレベルなら「慣れ」「訓練」で
多少は出来るようになる気がする。
とりあえず、1月1日なので、将棋をしてみることにした。
(昔おばあちゃんの家で百人一首とか将棋とかしてたから。
自分はオセロをしてて、将棋は他の人がやってるのを見てるだけだった。)
最も好きな漫画である「NARUTO」のシカマルのイメージである。
先のことを頭の中で順番に考えることを覚えたいのだ。
(プログラミングだけやっててもしんどいので気晴らしである)
こういうのはゲーム感覚でやるのがきっといいのだろう。
遊びから楽しんで覚えるのだ。
どこでもできる方がいいのでiphoneアプリでやることにする。
で、選んだのが下記のアプリ。
>App Storeプレビュー
>詰将棋 神の1手【初級編】-将棋が上達する無料1手詰み将棋ゲーム
>https://apps.apple.com/jp/app/jie-jiang-qi-shenno1shou-chu/id1145170346
※今、書いていて思ったが「初級編」とあるから、続編があるのか?
神の一手って、、碁のイメージだけど、、。
でも藤井聡太棋聖の将棋でも神の一手という言葉がよく聞かれるな。
タイトル画面はこんな感じ。
ゲーム画面はこんな感じ。
1手だけの詰め将棋が50問ある。
1手だけなら初めての自分でも気軽にできた。
せっかくなので50問全部解いてみた。(下記が全部終わった画面)
よい頭の体操になった。
しばらく詰将棋を趣味にしよう。
※最近、youtubeだけ見てても、最近見るものが減ってきた。
新しいのがアップロードされるより、自分が見る量が上回ってしまった。
このままではつまらない時間が増えてしまうが、
youtube、プログラミング、詰将棋、3つあったら多少改善されるだろう。
(追記)
勢い余って、次のアプリを始めた。
>詰将棋
>UNBARANCE Corporation
>https://www.unbalance.co.jp/sp/app/tsumes/
500円の有料アプリである。
いや、、今だけ110円と書かれている。(1/11までらしい。)
知らずにポチっとしていた。。
有料とか関係ない。
求めているのは自分にあった詰将棋アプリである。
色々他のアプリもダウンロードしたが、
無料のアプリは広告がうざいので有料でも全くかまわない。
(無料のものは1日の回数制限まであるものもある。
なんで回数を制限されないといけないのか。。。)
で、この有料詰将棋アプリのタイトル画面は下記画像。
操作画面はこんな感じ。
このアプリの一手詰の17問をすべて終わらせた。
(全然自慢にはならない。むしろ恥ずかしいが。)
完了状態の画面が下記画像。
次は三手詰になるのか。
一気に難しい、、というかできる気がしない。
(先の先を読めないからこれを始めたのだから。)
しばらく格闘は続く。
(追記その2)
三手詰も全42問終えた、、、。
将棋のプロは天才だな。。
1手先もなかなか読めねえ。。
いい頭の体操になったな。。
(追記その3)
そのままyoutube見る合間に将棋をやってみた。
5手詰を12問までやった。
結構、がんばった。
ただ、詰将棋ばかりやっても、
自分がどれくらいやれるのか実戦しないと分からない。
なので、実戦用のアプリをインストールした。
>AI将棋 ZERO
>https://apps.apple.com/jp/app/ai%E5%B0%86%E6%A3%8B-zero/id1325489888
タイトル画面はこんな感じ。
で、自分はほぼ初めてだから、
入門編でやってみた。
で、結果、勝った!やったね。
詰将棋やった分はちょっとだけ活きたな。
※正月の深夜に何やってんだろう。。
で、勝った時の画面を記念に残した。
持ち駒いっぱいあるな。。。取りすぎだな。
相手の飛車、角がすごい怖いんだよな。。取らないと安心できなかった。
これじゃ入門編でしか勝てないな。。