みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

院試の問題(FORTRAN)で。

FORTRANを昨日勉強し始めたばかりの初心者です。
とある大学院の試験問題でわからない部分があるので質問させていただきます。
問題文とソースは以下のとおりです。

以下のFORTRANプログラムについて、標準出力への出力を答えよ。

program main
intger :: m(3,3),i,j,k,n
n=3
m(1,1)=2; m(1,2)=1; m(1,3)=2
m(2,1)=2; m(2,2)=3; m(2,3)=12
m(3,1)=8; m(3,2)=-6; m(3,3)=2
do i=1,n-1
do j=i+1,n
m(j,i)=m(j,i)/m(i,i) ←
do k=i+1,n
m(j,k)=m(j,k)-m(j,i)*m(i,k)
enddo
enddo
enddo
write(6,*) m(2,1),m(2,3),m(3,2),m(3,3)
end

これを計算していくとm(2,2)=0(計算ミスだったらすみません)となってしまって
上のソースの矢印の部分でエラーが出てしまうと思い、
それだと出力出来ないのではないかと思ったんですが、
それでは答えにならないので質問させていただきました。

コンパイラを使って実行してみたいのもやまやまなんですが、
なにしろ試験まで時間があまりないもので・・・

どなたか回答できる方いらっしゃいましたらよろしくお願いします!

投稿日時 - 2008-07-26 00:09:24

QNo.4204336

すぐに回答ほしいです

質問者が選んだベストアンサー

>コンパイラを使って実行してみたいのもやまやまなんですが、
>なにしろ試験まで時間があまりないもので・・・

この意気が見えているし,実力はあるのに混乱しているだけで
課題投げじゃなさそうで嬉しい。

>m(2,2)=0(計算ミスだったらすみません)となってしまって

計算してみたし,実際にg95でコンパイルして実行してみたけどならないっす。

2 ,1 , 2
2 ,3 , 12
8 ,-6, 2

行列はカンマ無いけど,見づらいし,行列じゃないからいいや。

まず、

m(1,1)が2であり
m(2,1)が2であるから,

m(j,i)=m(j,i)/m(i,i)
により
m(2,1)は1になるよね?


2 ,1 , 2
1 ,3 , 12
8 ,-6, 2

m(j,k)=m(j,k)-m(j,i)*m(i,k)

k = i + 1からなので,さっき弄ったところは変えないのか。
ってことは j = 2の時

2,1,2
1,3-1*1,12-1*2
8,-6,2

が行われて

2,1,2
1,2,10
8,-6,2

次にj = 3だから

m(j,i)=m(j,i)/m(i,i)
んで
2,1,2
1,2,10
8/2,-6,2

2,1,2
1,2,10
4,-6,2
こうなって

m(j,k)=m(j,k)-m(j,i)*m(i,k)

2,1,2
1,2,10
4,-6-4*1,2-4*2

こうなって

2,1,2
1,2,10
4,-10,-6

次にi = 2だから
j = 3の時
m(j,i)=m(j,i)/m(i,i)

2,1,2
1,2,10
4,-10/2,-6
こうなって
2,1,2
1,2,10
4,-5,-6

m(j,k)=m(j,k)-m(j,i)*m(i,k)
ここで

2,1,2
1,2,10
4,-5,-6 - (-5) * 10

こうなって
最終形態が
2,1,2
1,2,10
4,-5,44

こう。

普段Fortran使ってなくて,
printの第一引数がなんだったか忘れたけど(フォーマットだったか出力先だったか)
気にしない(ぉ

>m(2,1),m(2,3),m(3,2),m(3,3)

出力する内容はコレだから

m(2,1) = 1
m(2,3) = 10
m(3,2) = -5
m(3,3) = 44


1 10 -5 44

投稿日時 - 2008-07-26 00:48:06

お礼

詳しい解答ありがとうございます!
おかげでどこが間違ってたか気付きました・・・
アホすぎる・・・
助かりました!
ありがとうございました!

投稿日時 - 2008-07-26 03:55:40

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問