1 名前:デフォルトの名無しさん [2006/01/24(火) 09:48:23 ] このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 FORTRAN使いが優しくコメントを返しますが、 お礼はFORTRANの布教と初心者の救済をお願いします。
983 名前:982 mailto:sage [2006/10/31(火) 20:56:03 ] ちなみに77でお願いします。
984 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 22:30:19 ] >>982 program hoge parameter (N=4) real a(N,N+1) open(11, file='data.txt', status='old') read(11,*) ((a(i,j), j=1,N+1), i=1, N) close(11) do 101 i=1, N piv = a(i,i) do 201 j=i, N+1 a(i,j) = a(i,j) / piv 201 continue do 202 j=1, N if (j .ne. i) then t = a(j, i) do 301 k = i, N+1 a(j,k) = a(j,k) - t * a(i, k) 301 continue end if 202 continue 101 continue write(*,*) (a(i, N+1), i=1, N) stop end エラーチェックは省いたので「不正なデータ」を読ますとランタイムエラーになるw
985 名前:982 mailto:sage [2006/10/31(火) 22:44:32 ] >>984 おー、こんなに短くなるもんなんですね。 後は自分でやってみます。 ありがとうございますた(`・ω・´)
986 名前:982の1/2 [2006/10/31(火) 23:55:25 ] 再度質問ですが PARAMETER (NN=10) DIMENSION A(NN,NN),B(NN),X(NN) WRITE(*,*)'何元の連立方程式か、元数を入れてください。' READ (*,*) N WRITE(*,*) 'N=',N OPEN(10, FILE='TEXT1.TXT', STATUS='OLD') DO 1 I=1,N READ (10,*) (A(I,J), J=1,N),B(I) WRITE(10,*) (A(I,J), J=1,N),B(I) 1 CONTINUE CLOSE(10) DO 100 K=1,N-1 P=A(K,K) DO 2 J=K+1,N A(K,J)=A(K,J)/P 2 CONTINUE
987 名前:982の2/2 [2006/10/31(火) 23:56:57 ] B(K)=B(K)/P DO 3 I=K+1,N Q=A(I,N) DO 4 J=K+1,N A(I,J)=A(I,J)-Q*A(K,J) 4 CONTINUE B(I)=B(I)-Q*B(K) 3 CONTINUE 100 CONTINUE X(N)=B(N)/A(N,N) DO 200 K=N-1,1,-1 S=B(K) DO 5 J=K+1,N S=S-A(K,J)*X(J) 5 CONTINUE X(K)=S 200 CONTINUE WRITE(*,*) ' 解 X ' DO 6 I=1,N WRITE(*,*) X(I) 6 CONTINUE STOP END ここまでは自分でアレンジしましたが、プログラムが回りません。 どこが間違っていますか?
988 名前:デフォルトの名無しさん mailto:sage [2006/11/01(水) 20:47:30 ] >>986 > DO 1 I=1,N のループの中で ファイルからデータを読み込んだすぐ後に 同じファイルに上書きしてる。 > DO 3 I=K+1,N のすぐ下 Q=A(I,N) → Q=A(I,K) こんなところかな。
989 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 14:34:42 ] >988 出力形式になってなかったですね。 激しく感謝です。
990 名前:デフォルトの名無しさん [2006/11/03(金) 00:40:49 ] そろそろ次スレたのむ、 テンプレも進化させてw
991 名前:デフォルトの名無しさん mailto:sage [2006/11/03(金) 12:47:20 ] Formula 1
992 名前:デフォルトの名無しさん [2006/11/04(土) 13:00:21 ] 2007年はFORTRAN50周年だ。 俺達も盛大に祝おうぜ!!
993 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 16:32:22 ] FORTRAN = FORmula TRANslation
994 名前:フォートランを初めて3日目 [2006/11/04(土) 19:37:05 ] 今、ワードのようなテキストデータの中に1961年から2005年までの乱雑した年 数だけわかっていて、そこから連続した数を抽出し、発生頻度と見なしてその 発生確率からポアソン分布による乱数を行なえるようなプログラムを知りたい のですが、よければ、教えてくれませんか?
995 名前:デフォルトの名無しさん [2006/11/04(土) 20:44:32 ] >>994 そのようにファイルから読み出すのは初心者には難しいだろう。 発生確率にするまで教えてやろう。 データ例を出せ。 そこから先の後半は、カテゴリーが違うので後だ。 まずは作業を概念的に分割して小さい単位で作れ。
996 名前:フォートランを初めて3日目 [2006/11/05(日) 11:34:08 ] データ例と言われましても、初めてでよくわからないのですけど、’nenpow.txt' というようなワードの文章の中に112行1列(要は縦に一つずつの年報が並んでいる) になっています。ちょっと描いてみると 1行目:1961 2行目:1961 3行目:1962 … 112行目:2005 というようになっており、ここからそれぞれの年報をまとめて発生個数として ポアソン分布を作成し、それによる確率的な乱数を発生させるようにしたいの ですけど・・・。 初めてなので、こういう解釈になってしまうのですけど、わかりますか?
997 名前:フォートランを初めて3日目 [2006/11/05(日) 11:38:56 ] できれはFORTRAN77と、90の両方でお願いしたいのですけど
998 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 12:14:28 ] >>997 PARAMETER (NYMIN=1961, NYMAX=2005, NTOTL=112) INTEGER NUM(NYMIN:NYMAX) DO I=NYMIN, NYMAX NUM(I) = 0 END DO OPEN(11, FILE='nenpow.txt', STATUS='OLD') DO I=1, NTOTL READ(11,*) NY IF ((NY .LT. NYMIN) .OR. (NY .GT. NYMAX)) THEN WRITE(*,*) 'ERROR:', I, NY ELSE NUM(NY) = NUM(NY) + 1 END IF END DO CLOSE(11) DO I=NYMIN, NYMAX WRITE(*,*) I, NUM(I) END DO STOP END 長くなりそうなので、 ファイルから年を読んで NUM(1961)〜NUM(2005) に各年の出現数を格納する 所まで 残りは誰かが次スレでw
999 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 17:39:02 ] FORTRAN = FORmula TRANslation
1000 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 17:39:39 ] 次スレ FORTRAN III pc8.2ch.net/test/read.cgi/tech/1104724162/l50
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。