質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。

Q&A

解決済

1回答

338閲覧

多重ループを利用した値の代入

okkun-gg

総合スコア19

FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。

0グッド

0クリップ

投稿2022/01/29 14:59

編集2022/01/30 04:35

縦横長さ3cmの正方形の中に1cm間隔で格子点が配置されているとします。つまり格子点の数は16個。その配置された格子点の中の左上のものの番号を1とします。
この番号1のついた格子点とそのほかの格子点の距離の合計は
do i = 1,16
r(1) = r(1) + sqrt((x(i)-x(1))**2 + (y(i)-y(1))**2)
enddo
とあらわされます。(x(i),y(i)は各格子点のx,y座標の値を格納したもの。例えば格子点1の時はx(1),y(1)とあらわされます。)これを1から16のすべての場所について計算し、r(k)(k番目の格子点とそのほかの格子点との距離の合計)に格納したいときどのようにしたらいいのかお聞きしたいです。もちろん
do k = 1,16
do i = 1,16
r(k) = r(k) + sqrt((x(i)-x(k))**2 + (y(i)-y(k))**2)
enddo
enddo
は試してみましたが、うまくいきません。
上記のプログラムを実行すると結果は256(16*16通り)出てきてしまいます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

okkun-gg

2022/01/29 15:15

3cmでした(笑) 変更しておきました
guest

回答1

0

ベストアンサー

これを1から16のすべての場所について計算し、r(k)(k番目の格子点とそのほかの格子点との距離の合計)に格納したい

そのまま書けば良いと思います。

Fortran

1do k = 1,16 2r(k) = 0 3do i = 1,16 4r(k) = r(k) + sqrt((x(i)-x(k))**2 + (y(i)-y(k))**2) 5enddo 6enddo

投稿2022/01/29 15:22

otn

総合スコア84533

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

okkun-gg

2022/01/30 04:37

otnさんの指摘のように回答のr(k) = r(k) + sqrt((x(i)-x(k))**2 + (y(i)-y(k))**2)の右辺のr(k)の部分を追加して実行しましたが、結果は16*16の256通り出てしまいます。
okkun-gg

2022/01/30 04:59

解決しました。r(i)の出力位置(write(*,*)の位置)を do k = 1,16 r(k) = 0 do i = 1,16 r(k) = r(k) + sqrt((x(i)-x(k))**2 + (y(i)-y(k))**2) write(*,*)r(i) enddo enddo としていたことが原因でした。 do k = 1,16 r(k) = 0 do i = 1,16 r(k) = r(k) + sqrt((x(i)-x(k))**2 + (y(i)-y(k))**2) enddo enddo do i = 20 write(*,*)r(i) enddo とすると 7.6986150401005802E-004 6.4590329555585017E-004 6.4590329555585017E-004 7.6986150401005802E-004 6.4590329555585006E-004 5.0859106568475470E-004 5.0859106568475470E-004 6.4590329555585038E-004 6.4590329555585017E-004 5.0859106568475481E-004 5.0859106568475470E-004 6.4590329555585027E-004 7.6986150401005824E-004 6.4590329555585027E-004 6.4590329555585038E-004 7.6986150401005835E-004 0.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 となり16個の結果が出力できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問