1

.f ファイルには、これを行うコードがあります。

real Bob, avar
...
avar = Bob( 8.3 )
...

Bob は関数のように見えますが、ファイルの先頭で実数として宣言されています。

次に、Bob への参照を含む .d ファイルがあります。また、 avar が補間された値を保持していることも知っています。問題は、補間が常に正しいとは限らないことです。

Bob    John      35
-17.     -16.     -15.     -14.     -13.     -12.     -11.     -10.     -9.      -8.  
-7.      -6.      -5.      -4.      -3.      -2.      -1.       0.       1.       2.5  
 3.       4.       5.       6.5      7.       8.       9.       10.      11.      12.  
 13.      14.      15.      16.      17.  
 0.001    0.001    0.041    0.098    0.155    0.213    0.27     0.327    0.384    0.441   
 0.499    0.556    0.613    0.670    0.728    0.785    0.844    0.904    0.965    1.058   
 1.089    1.152    1.216    1.314    1.347    1.413    1.479    1.543    1.609    1.670   
 1.733    1.799    1.860    1.925    1.937 

これはすべてレガシー コードです。私はそれを書きませんでした。私はそれを修正しようとしています。私の質問は次のとおりです。

これは何をしているのですか?.d ファイルとは何ですか?

補間しようとしていると思いますが、FORTRAN 77 でこれを (このように) 実行できるとは思いませんでした。

4

4 に答える 4

1

.d ファイルには、ほぼ線形のデータが含まれているようです。実験データのようです。35 はあなたが持っているポイントの数です。次に x があり、次に y があります。

Bob と John は、ある種の文字列マーカーまたは識別子のように見えます。それらはおそらく、データをどうするか、またはそれらが表すデータの種類を決定するために、コードのどこかで使用されます。

ボブは関数のようです。関数を宣言するには 2 つの方法があることに注意してください。

real function foo(a)
    implicit none
    real, intent(in) :: a
    foo = 3.0+a
end function

program test
   implicit none
   real foo, bar, a, b
   bar(b) = b+5.0

   a=foo(5.3)
   print *, a, bar(2.3)
end program

1 つは明示的なケース (foo) で、関数自体として名前が付けられた変数に割り当てて値を返します。もう 1 つのケースは「暗黙的」(正式な名前がわからない) です。bar を参照してください。それを「配列」として宣言し、それがどのように動作するかを表現します。めったに見ませんが、非常にコンパクトな文章です。

于 2009-06-25T00:45:00.193 に答える
1

Bob は、渡された実数値 8.3 を取得し、avar に格納されている実数値を返す関数のようです。しかし、投稿したコードから収集できるのはそれだけです。

于 2009-06-25T00:10:26.657 に答える
0

.d ファイルは、おそらく .dat を短縮するドープの方法です。彼は怠惰すぎて余分な 2 文字を入力できませんでした。昔のプログラマーはそうでした。

「ボブ」が-17から+17までのX軸であり、「ジョン」がボブポイントに対応するY方向の値のセットであるグラフに単純な補間関数があるようです。(32 ポイントしか表示されていないため、35 が何のためにあるのかわかりません。)

コードは、X 軸の値 8.3 に対して、Y 方向の補間値を求めています。線形形式では、1.413 と 1.479 の差の 0.3 倍が返されます。それはより高次のインターポレーターかもしれませんが、コードを示していないので、最も単純なものだと思います。

于 2009-06-30T19:33:55.767 に答える