[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 12:09 / Filesize : 350 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

くだすれFORTRAN(超初心者用)その2



1 名前:デフォルトの名無しさん [2006/11/22(水) 00:00:36 ]
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
FORTRAN使いが優しくコメントを返しますが、
お礼はFORTRANの布教と初心者の救済と次期Fortran2008規格でのCOMEFROM文採用をお願いします。

●注意事項
・質問する前にGoogle等の検索サイトで検索しましょう。
・回答者にわかりやすい様に、質問内容はできる限り詳しく書きましょう。
・エラーの場合は起きた状況、環境(OS・コンパイラ)、エラーメッセージも詳しく書きましょう。


●前スレ
くだすれFORTRAN(超初心者用)
pc8.2ch.net/test/read.cgi/tech/1138063703/

●関連スレ
FORTRAN W
pc8.2ch.net/test/read.cgi/tech/1163319215/


655 名前:635 [2007/06/27(水) 18:23:48 ]
f90 〜.f90 -o 〜
というやりかたでコンパイルします。
たぶんCygwinではないとおもいます。先生は勧めていましたが、それを使えばうまくいくのでしょうか?


656 名前:635 [2007/06/27(水) 18:32:48 ]
わかりました。
Tera Term ah.〜
です。

657 名前:デフォルトの名無しさん [2007/06/27(水) 19:19:25 ]
gfortranで、xx.fというファイルをコンパイルしてみたのですが、

> gfortran xx.f
で、文法上のエラーは無いものの、下のメッセージが出ます。
ググってはみたんですが、対処法が分からず困っています。
助けてください。


xx.f: In function 'MAIN__':
xx.f:342: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:gcc.gnu.org/bugs.html> for instructions.

658 名前:デフォルトの名無しさん [2007/06/27(水) 19:20:48 ]
あ、OSはXP sp2です。

659 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 20:53:56 ]
>>655
む、Fortran90 か。
困ったな。こっちにゃコンパイラがないや。

660 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 20:55:03 ]
>>657
コンパイラのバグで落ちてるように見える。

同じことを実現する別のコードに書き換えると
回避できる可能性はある。

661 名前:デフォルトの名無しさん [2007/06/27(水) 21:34:07 ]
>>660
俺は配列が間違ってる希ガス

ソースだせ。該当ラインの前後10行くらい

662 名前:643 [2007/06/27(水) 22:26:26 ]
>>646
それくらい、察してくださいよ。

663 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 22:46:15 ]
>>656
いやそれ、全然わかってないから。

>>644
>jwe0173i-w line 7 Invalid decimal character . was detected (unit=10).
富士通のコンパイラか?
ttp://ccinfo.ims.ac.jp/vpp/manhtml/html/japan/lang/Fort/html/japan/langFortMSG/fmej03/fmej0025.htm

入力ファイル中の"."が10進数値ではない不正な文字だ、と出ているが
配列Aを整数型で宣言しているとか、入力ファイル中に数値以外の文字が混ざっているとかしてないか?

いずれにせよ、いきなり本番用のでかいデータを読み込ませたりせずに
まずは>>643のプログラムの頭にimax, jmaxを適当な小さい値で追加して、
test.csv もそれに合わせて手入力で作ってテストしてみろ。



664 名前:633 [2007/06/27(水) 23:00:27 ]
>>663
ありがとうございます。
実のところ、入力ファイルを.datに変換してtestの方を実行すると、うまく(?)いきました。
また、write文で','を使って.csvを出力することはできました。
1×96行列になってしまいましたが…
多次元配列は扱えないのかもしれません。

665 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 23:01:12 ]
扱えないわけが無いと思うんだが。

666 名前:633 [2007/06/27(水) 23:11:30 ]
>>665
エクセルの隣の列に移す記号を教えてもらえませんか?
','はわかるんですけど、「改行」のようなものを意味する記号は何ですか?

667 名前:デフォルトの名無しさん [2007/06/27(水) 23:12:15 ]
色んなことが、ごっちゃになって理解できてないな。

エクセルの、読みこむ側のファイルってタブ区切りか?

668 名前:633 [2007/06/27(水) 23:36:08 ]
読み込む側はエクセルのファイルをTera Termにコピペしたものを.datで保存したものです。
なので区切りとかはないと思います。

669 名前:667 [2007/06/27(水) 23:48:18 ]
エクセルのファイルは普通のエクセルか?と言っても668には何を言いたいか
わからないだろうな。
 エクセル開いてドラッグで範囲決めてコピペしてるのか?

vista側のエディタは何だ?秀丸とかか?

制御文字を表示させると区切り分かるけど。

670 名前:633 [2007/06/28(木) 00:03:58 ]
MicrosoftのOffice2003のエクセルです。
コピペはその通りです。

ちなみにXPです。
エディターはよくわかりませんが「emacs -nw 〜」コマンドでテキストウィンドウを開きます。

671 名前:643 [2007/06/28(木) 00:25:07 ]
>>633
OpenOffice.org Calc しかないから、Excel だと若干違うかもだけど、
csv 形式で保存するときに、区切り文字していできるでそ。
そこで、区切り文字カンマ(,)で保存すると、
----------ここから----------
1,2,4,8,16,32
-1,-3,-9,-27,-81,-243
10,100,10,100,10,100
0,0,1,0,0,1
----------ここまで----------
こんなファイルできる。
で、↓のような Fortran90 プログラムで読み込みと表示の確認ができると思う。
----------ここから----------
PROGRAM read_csv
IMPLICIT NONE
INTEGER,PARAMETER :: imax=4, jmax=6
REAL(8),DIMENSION(imax,jmax) :: a
INTEGER :: i

OPEN(1,file="test.csv")
  DO i=1,imax
    READ(1,*) a(i,:)
  END DO
CLOSE(1)

DO i=1,imax
  WRITE(*,*) a(i,:)
END DO

END PROGRAM read_csv
----------ここまで----------

672 名前:633 [2007/06/28(木) 00:41:05 ]
>>671
ありがとうございます。
うちではできないので、学校に行って実際にやってみようと思います。

一応エクセルでは.csv形式で保存できるのですが、保存する際に警告みたいなメッセージが出るので
原因はそれなのかな?と思いはします。

673 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:56:22 ]
>>672
それは
「csv(テキスト)で保存するとExcelの計算式やセルの装飾などの情報が失われるよ」
という警告だがら、関係ない。



674 名前:667 [2007/06/28(木) 12:04:28 ]
コピペするとタブ区切りで持っていくはずだけどね

675 名前:657 [2007/06/28(木) 12:33:54 ]
メッセージのxx.f:342は、342行目ということだったんですね。

342,343行目は、
STOP
END
なんですが。。

676 名前:661 [2007/06/28(木) 14:39:50 ]
だから前後て書いてるでしょ

サブルーチンあるのか?配列の引渡しは、うまくやってるか?

677 名前:672 [2007/06/28(木) 14:56:13 ]
>>671
やはり、
was detected (unit=10).id decimal character
(the relative position causing an error in a record = 13 )
3,1.427,0.747
?
error occurs at MAIN__ line 15 loc 000106ec offset 00000044
MAIN__ at loc 000106a8 called from o.s.
taken to (standard) corrective action, execution continuing.
というエラーになります。
プログラムは
implicit none
integer,parameter :: imax=24,jmax=4,iimax=3,ijmax=40
real(8),dimension(imax,jmax) :: N,L,M
real,dimension(24,4) :: X
integer,dimension(24,4) :: K
real,dimension(iimax,ijmax) :: A
real(8),dimension(3,40) :: B
real :: f
real(8) :: lambda,omega
integer :: i,j,ii,ij

open(10,file='danmenseki.csv',status='old') !表1.1を読み込む
do ii=1,iimax
read(10,*) (A(ii,ij),ij=1,ijmax)
end do
close(10)
です。
>>673
ソフトの問題ではないわけですね。ありがとうございます。



678 名前:657 [2007/06/28(木) 19:45:34 ]
>676
ありがとうございます。
全部で546行のソースで、342行目にSTOP、343行目にENDがあります。
その後ろに4つのSUBROUTINEがあります。
配列の引渡しについては、引数を確認しましたが、型・サイズは同じでした。


679 名前:661 [2007/06/28(木) 20:25:40 ]
>>678
デバッグモードで確認するかだね。gfortranはできるのかな?
gnuだからできると思うけど

680 名前:657 [2007/06/28(木) 21:24:58 ]
>>679
ありがとうございます。

コンパイラのデバッグモードって、このオプションのことですか?
わけのわからないメッセージが出まくったのですが。困りました。
-fdump-parse-tree
Output the internal parse tree before starting code generation. Only really
useful for debugging the GNU Fortran compiler itself.

これ以外の Options for Debugging Your Program or GNU Fortranは、
runtime用のもののようです。

681 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:29:04 ]
>>677
どうもこちらで再現できないから、
うまくいった友達とやらに見てもらった方がいいかもしれん。

682 名前:661 mailto:sage [2007/06/28(木) 21:37:17 ]
デバッグは「-g」のはず。
gdb使ってね。

一通りミリ
ttp://www.k.mei.titech.ac.jp/~stamura/NumericalComputation-Tips.html

"-fbounds-check"でこけたりして

683 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:21:15 ]
まだCVSファイルの問題が解決してないのかw

たしか富士通のコンパイラはレコード長の絡みでうるさいので、それかも試練。
入力データの1行の長さはどれくらいだ?
すごく長いなら、OPEN文でレコード長を大きくしておけ。

富士通のコンパイラは10年くらい使ってないから、保障しないがw




684 名前:677 [2007/06/30(土) 00:30:41 ]
結局.datファイルで入力することにしました…
出力の方は24×4のはずが96×1で出てしまいますが手作業で直しました。
月曜にまた学校でいろいろ試してみますね。

685 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 14:21:05 ]
>>684
>出力の方は24×4のはずが96×1で出てしまいますが
つ 改行コード

Windows側で LFのみの改行に対応したエディタか変換ツールを使うヨロシ。

686 名前:デフォルトの名無しさん [2007/06/30(土) 16:58:07 ]
>>685

ftpソフトでwin-unix
lf-cr+lf対応を使った方が早いと思う。

687 名前:デフォルトの名無しさん [2007/07/01(日) 22:28:27 ]
フォートラン初心者です.
BLASを使っていろいろ計算しようとしたんですが,内積で何故か良く分からない数値がでます.

PARAMETER ( N = 4)
REAL*8 e(N)/N*1.0/
inc = 1
WRITE(6,*) DDOT(N,e,inc,e,inc)
END

実行結果が 2.25000000
1,1,1,1と1,1,1,1の内積だから4になってほしいんですが・・・

C言語なら少しは分かります.
だれかぼすけて

688 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 01:09:45 ]
>>687
適当なので気休めまでに。

REAL*8 e(N)/N*1.0/
これを
REAL*8 e(N)/N*1.0d0/
にしてみそ。
コンパイラによっては、単精度4バイト4つ分を頭から詰めているのかもしれない。

別に考えられるのは、関数を直接WRITE文で書き出しているが、一旦変数に入れるのもよろし。
Cと違ってValueでは返さないので、関数をサブルーチンの引数にしたりすると
コンパイラによって受け付けたり、受け付けなかったり、暴走したりすることがある。
ただ、Write文だから大丈夫だと思うが。あとf90になってからは、おkのことが多い気が駿河。



689 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 01:55:33 ]
>>687
Intel Fortran Ver.10.026 + MKL 9,1 では、ちゃんと4が出たwww

おぬしのコンパイラ環境等は何ぞや。

690 名前:687 [2007/07/02(月) 06:56:16 ]
>>688
>REAL*8 e(N)/N*1.0d0/
変化無しOrz
初期化は上手く行ってるみたいです.
それといったん変数に入れても同じ.
ここでさらに気になるのは,DDOTの戻りが単精度っぽいところ・・・

>>689
よくわからないんですが適当にHPを漁ってみると
本体:FUJITSU PRIMEPOWER HPC2500
OS:Solaris 8
コンパイラFortran JIS X3001-1:1998 (Fortran95)
マニュアルとかのリンクが富士通なので,コンパイラも富士通だと思います
コンパイル時は,
%frt test.f90 -SSL2 -O0
でやってます

スパコンでベクトルの内積一本とか,なにやってんだ俺\(^o^)/

691 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 11:29:11 ]
>>690
%frt -SSL2 -O0 test.f90

こうとかwwwww

>ここでさらに気になるのは,DDOTの戻りが単精度っぽいところ・・・
これが気になるな。症状的にはサブルーチンの単精度倍精度の割り当て違いっぽいので。
 
DDOTにもDOUBLE指定が必要な仕様かw
IMPLICIT REAL*8 (a-h,o-z)
もつけてみるかw


692 名前:デフォルトの名無しさん [2007/07/02(月) 14:26:52 ]
pgf90のコンパイルで困っています。
makeを実行すると

PGF90-W-0119-Redundant specification for name_size (Size_Class.f90: 101)

のようなエラーがでてきます。
これはコンパイルオプションでなんとかできるものなのでしょうか?
教えてください。

693 名前:デフォルトの名無しさん [2007/07/02(月) 16:34:13 ]
>IMPLICIT REAL*8 (a-h,o-z)
かもね。

ただ、最適化するな。それで答えはどうなる?
最適化の問題か



694 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 23:12:58 ]
>>693
オプション -O0 使ってるから、最適化はして無いだろう。
多分DDOTもdble宣言しておかないと駄目なんだろ。EXTERNALと合わせて。
前にも似たような症状がスレに出ていた希ガス。

この辺は、NEC<<<Fujitsu<Hitachi の順でコンパイラのケツの穴が狭いという
昔の言い伝えにあるように、Fujitsuはコンパイラが宣言にうるさいんだろ。

NECはゆるすぎて、ホモの尻穴のごとく何でもホイホイ容れてしまうのだがwww



ところで、おまいら 京速コンピュータがNEC、日立、富士通の三社合同になったことをどう思う?
完全に破滅コースに入ったと思うんだがwwwwwwww

695 名前:デフォルトの名無しさん [2007/07/03(火) 00:16:01 ]
>>694
最適化しないというオプションは効いてない場合もある。-Oは書かない。

京速?北海、九州コンピュータに頑張ってもらおう。

696 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 23:44:22 ]
>>695
>北海、九州コンピュータに頑張ってもらおう。
意味分からん。解説よろ。

697 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 04:54:07 ]
linpackのMPI版はありませんか?

698 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 23:07:37 ]
>>697
あるべ。


699 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 02:02:05 ]
最近WINDOWS版g95をインストールし問題なく動いていたのですが、
突然エラーが出るようになってしまいました。

g95: installation problem, cannot exec 'as': No such file or directry

とでて、コンパイルができなくなっている状態です。
pathは通っていますし、インストールもうまくいったはずなのですが・・・
なにより最近まできちんど動いていたので、全く原因がつかめません。

700 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 12:03:12 ]
>>699
動いていたときと動かなくなった間に、何をしたのかを書かなければ誰にも分からん。
何もしていないというのは無し。

XPだったら復帰ポイントで戻れw

701 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 16:24:12 ]
自宅でfortran77を使うために、CPad for FTN77をダウンロードしたんですが
コンパイルして実行すると

コンパイルに失敗しました。
ファイル"〜〜test.exe”は存在しません。

と言われるのですがどうすれば解決できますか?

702 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:25:56 ]
>>701
バグ取りすれば解決できます。

703 名前:701 mailto:sage [2007/07/06(金) 21:35:33 ]
>>702
度々すみません
具体的にどういうことをすればいいんでしょうか?



704 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:38:10 ]
>>703
自分の入力したプログラムをじっくり眺めて間違ってるところを直せばいいだけだよ。

705 名前:701 mailto:sage [2007/07/06(金) 23:49:35 ]
>>704
学校ではコンパイルも実行もできたやつなんですが…
といっても間違いがないとは限らないということでしょうか

簡単なもので試したんですが
write(*,*)'test'
end
でもできませんでした。


下のメッセージに

■C:\〜〜〜〜〜〜〜〜〜\data> ftn77 /link test.f
Cannot open authorisation file c:\〜〜〜\ftn77.ser:   (文字化けしてる)
System error (3): 指定されたパスが見つかりません。

と出てました。
ftn77.exeにつなげてるんですが…。

706 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 00:03:08 ]
>>705
FTN77は日本語の入っていないパスにインストールしろ。

707 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 03:10:21 ]
>>701
同じ質問がこのスレだけですでに2,3回出ているw
>>65あたりみろ


708 名前:701 mailto:sage [2007/07/07(土) 12:56:23 ]
できましたー!
一番の原因は>>706さんが言ってることでした
答えてくれた方々、本当にありがとうございました

709 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 13:45:18 ]
今度質問することがあったら、最初からエラーメッセージをコピペしような。

710 名前:デフォルトの名無しさん [2007/07/08(日) 13:09:06 ]
粘IN/1-T
の式をTを0から3まで0.5刻みでとって
さらにN=1、2、3、4、5について別々に求めたいのですが、わかりませんどなたかよろしくお願いします

711 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 13:16:07 ]
すいません↑の式は
粘IN30/1-T-n
狽ヘn=1からNまでです

712 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 21:33:21 ]
DO 10 T=0,3,0.5
S=0
WRITE(*,100) T
DO 10 N=1,5
S=S+SIN(30*3.14159/180)/1-T-N
10 WRITE(*,101) N, S
STOP
100 FORMAT(1H , 'T=', F6.2)
101 FORMAT(1H ,'N=',I2,F12.3)
END

713 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 01:34:10 ]
神です!ありがとう



714 名前:デフォルトの名無しさん [2007/07/09(月) 08:16:24 ]
まー>>711の式が悪いので、本当に計算したいモノと違うだろうな
と思うが、ある程度書いて貰ってるから後は自分で変えろ。

おれは712では、ないけど。>>711を指摘しようと思ったけどヤメタ

715 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 01:30:43 ]
何時も気になるんだけど、このスレの住人はFORTRAN77とかFORTRAN95とか
明示せずに質問したり、解答したりしてるけど問題に成らないのか?

716 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 02:28:56 ]
回答する分には答えやすい方(主にF95)に勝手に脳内補完するから無問題。
問題になるなら>>1をよく読んでから質問しろと言いたい。

717 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 11:49:19 ]
>>715
宿題はを聞く奴は違いが分からないw 結局は77になるようだが。

そうでない場合は90で答えて大丈夫だろう。さすがに90処理系はたいがいどこにでもある。

718 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 11:52:16 ]
77で答えておけばそれより上位でもだいたい問題ない。

719 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 23:08:26 ]
>>694
すごく・・・買vロジェクトです。

720 名前:デフォルトの名無しさん [2007/07/12(木) 01:20:37 ]
GNUのfortranって何であんなに遅いの?

721 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 09:40:57 ]
>>720
素人が作ってるからでないの?

GNU-Cだって倒産した商用コンパイラを引き継ぐまではf2c+gccで、小さなサンプル以外は
まともに走ったことが無かったような記憶が。

722 名前:デフォルトの名無しさん [2007/07/13(金) 18:39:06 ]
↓この問題が全くわかりません。
教えてください。
よろしくお願いします。   

   ......
call rndm0 ( )
......
a = rndm ( )
......
b = rndm ( )

このルーチンを使って、乱数を 100 回発生させて それをファイルに書き込む
プログラムを作成せよ。それを実行し、ファイルに正しく書き込まれたことを
確認せよ。なお、メインプログラムと独立したファイルにサブプログラムが
書かれている場合は、メインプログラムを違う名前のファイルで作成した後に、
コンパイルすればよい。


723 名前:デフォルトの名無しさん [2007/07/14(土) 10:48:45 ]
自分で調べるのを前提に書く

サブルーチンを使ったプログラム書けってことじゃ?

PROGRAM HOGE
 ファイルを開く(OPEN文)
ループスタート 100回
  CALL RNDM()
  Aを書く
 エンドループ
 ファイルを閉じる(CLOSE文)
 STOP
END

 SUBROUTINE RNDM
乱数発生するぞするぞ!
RETURN
 END

「メインプログラムと独立したファイルにサブプログラムが書かれている場合」
てのは、ライブラリが有るって事

調べて分からない場合は又書き名。調べた痕跡が分かれば俺は答える。



724 名前:722 [2007/07/14(土) 14:32:45 ]
>>723
ありがとうございます。
調べてみます!


725 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 03:39:15 ]
ボコボコにしてやんお 
.∧_∧ 
(  ^ω^)=つ≡つ 
(っ  ≡つ=つ 
/   ) ババババ 
( ノ ̄∪ 


726 名前:デフォルトの名無しさん [2007/07/19(木) 11:52:59 ]
たとえば、
WRITE(*,'(E10.4)') 0.0001234
とすると、出力結果は0.1234E-03となります。
この出力結果を、1.234E-04とするにはどうしたらいいのでしょうか?


727 名前:デフォルトの名無しさん [2007/07/19(木) 14:40:44 ]
そうするメリットは何?

文字として扱うかですね。

728 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 17:24:04 ]
E形編集を使ったこと無いから、気付かなかったけど
E形編集ってメイドコスプレしたオッサン並に気持ち悪い。

729 名前:デフォルトの名無しさん [2007/07/20(金) 00:09:39 ]
>>727
おい! クソ豚! わかりもしないことに口出しするな!
しょんべん飲んで、とっとと死にやがれ!

>>726
その要望は多くの人が持っていたので、Fortran90で対応がなされた。
ただしFORTRAN77でも出来ることは出来る。

Fortran90なら、ESフォーマットを使えばよい。SはScientificのSだ。
工学と科学では表記の伝統が違うようだ。詳しくはマニュアル嫁。

Fortran77の場合は、1P, E10.4, 0P を使えばよい。Pフォーマットは思わぬ副作用があるので、
使用後はすぐに 0P で元に戻しておいたほうが間違いが無い。
詳しくはマニュアル嫁。


730 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 01:19:02 ]
>>727
そりゃ少ない文字数で多くの桁を表現できるからだろ。

731 名前:デフォルトの名無しさん [2007/07/20(金) 14:49:51 ]
>>729

0.123......
1.234......
と小数点以下を同じ桁数でして、桁数も大きくすると
仮数分の限界を越すと思うが

732 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 16:49:58 ]
何が言いたいのか分からない

733 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 21:14:08 ]
無視でおk



734 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 23:45:57 ]
>>731
WRITE(*,'(E10.4)') 0.0001234
      〜〜〜

ちゃんと>>726を読んだらどうだ?
2chなんか見てないで、精神病院でも逝って来い!




735 名前:デフォルトの名無しさん [2007/07/22(日) 03:13:48 ]
r(i)をreal(8)の配列として、
sin(r(i))の値を求めたいのですが、出力が0になります。
どなたかどうすればちゃんとした値が帰ってくるのか教えてください。

736 名前:デフォルトの名無しさん [2007/07/22(日) 03:55:29 ]
r(i) がゼロなんじゃね?

737 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 03:57:02 ]
整数に代入した後に出力してるとか。

738 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 13:18:36 ]
>>735
ソース見せろ


739 名前:デフォルトの名無しさん [2007/07/25(水) 20:50:00 ]
配列の宣言で、REAL A(10,5)とすべところをA(5,10)と間違って宣言したままコンパイルし、
しかもboundのチェックしないオプションでコンパイルしてエラー等は起きずに動いた場合、
たとえば、A(7,7)にアクセスした結果は、
どちらの宣言でも同じなのでしょうか?
C言語の場合は同じというような話をきいたことがあるのですが、FORTRANの場合
いかがでしょうか?
処理系に依存して結果が不定なのでしょうか?


740 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 20:52:54 ]
同じなわけがない。C でも。

741 名前:デフォルトの名無しさん [2007/07/25(水) 21:53:51 ]
C言語なら5×10=50のエリアに連続的に並んでいるだけだから、
A(7,7)は49番目というつもりなら境界を越えない限りは
アプリの実行結果は同じになるんじゃないか。

742 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 21:55:50 ]
A(10,5) で A(7,7) はおもっくそ境界越えとるがな。

743 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 00:22:18 ]
>>742
従来のFORTRANでは、境界はあまり気にしなくていい。
というか、サブルーチンに渡したりするときは次元すら気にしない。
どうせ先頭番地しか渡してないので。自己責任でGo!

>>740 >>741が正しい。
どうせメモリー上では1次元に展開されているので、どう展開されるか分かっていれば
本来不正な添え字でも、目的の配列要素をアクセスすることが可能。

ただ、FORTRANとCでは、1次元に展開される時の列と行の順序が逆になっている。
FORTRANは縦書き。A(1,1),A(2,1),A(3, 1),.....,A(1,2), A(2,2), A(3, 2),.....という風にメモリー上に
並んでいる。
.








744 名前:デフォルトの名無しさん [2007/07/26(木) 07:24:32 ]
FORTRANの他に数値解析に向いてる言語って何がありますかね?

745 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 08:43:53 ]
>>743
いや、配列のために確保されているメモリ領域を越えちゃってるという意味で・・・

746 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 10:30:25 ]
>>745
今回に限って言えば、50>7*7=49でぎりぎりセーフでね?


747 名前:デフォルトの名無しさん [2007/07/26(木) 12:17:43 ]
>>746
Cは0から始まるから A(7,7) は (7+1)*(7+1)=64番目なのよ。
まあ、>>739のは Cの場合はA(6,6)と読み替えてやるのがよろし。

748 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 12:23:45 ]
>>746
A(10,5) で A(7,7) にアクセスするってのは、
10 * (7 - 1) + 7 = 66 番目のメモリ領域にアクセスするってことで、
50 要素しかない A(10,5) のメモリ領域は余裕で越える。

749 名前:747 mailto:sage [2007/07/26(木) 12:32:02 ]
>>748
確かにそうだ。何で1行7要素だと思ったのか。
馬鹿だった。

750 名前:デフォルトの名無しさん [2007/07/26(木) 14:56:16 ]
じゃA(5,10)なら良いのか?
violationになりそうだけど

751 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 19:32:06 ]
5 * (7 - 1) + 7 = 37 だから、
確保したメモリ領域を越えないという点に関してのみは問題は無い。

752 名前:739 [2007/07/26(木) 19:38:10 ]
>740-751
皆さんありがとうございました。
考え方がよくわかりました。
変な質問になってしまい申し訳有りません。
A(7,7)は例が悪かったと反省しています。


753 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 19:58:59 ]
>>744
お金があったらMATLAB
貧乏人ならOctave



754 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 23:33:09 ]
>>748
んだ。おまいが正しい。わしが間違ってた。すまんこw


755 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:32:54 ]
>>743
>どうせメモリー上では1次元に展開されているので、
そうなんすか・・・知らんかった
つまり、A(7,7)は単に先頭から7*7=49番目を見るってことですか?

>ただ、FORTRANとCでは、1次元に展開される時の列と行の順序が逆になっている。
つまりFORTRANは左から、Cは右から1,2,3,・・・と展開していくってことですか






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<350KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef