• ベストアンサー

FORTRANの絶対値についてです。

FORTRANでの絶対値はabsでできますよね。それなんですが、使い方が調べてもよくわかりません。 t=|xの平均-yの平均|をプログラムにするならば t=abs(xの平均-yの平均)とすればいいのですか? よくわからないので教えてください。

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

  • ベストアンサー
  • aid-u
  • ベストアンサー率75% (22/29)
回答No.2

使用例を探してみました。参考URLを見てください。 使い方は正しいようです。

参考URL:
http://www.netlib.org/lapack/timing/lin/clinpk.f

その他の回答 (2)

  • wakaranan
  • ベストアンサー率42% (204/481)
回答No.3

元の数式で絶対値を示す| |で挟まれた中身(数値または式)を abs( ) の( )の中に記述すればいいだけです。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

FORTRAN は使ってないけどそれでいいはず. というか, 「使い方がよくわからない」って何をどう調べたんだろ....

saifhgfhw
質問者

補足

まず絶対値はどう表すのか、わからなかったのであらわ仕方を調べました。調べたら絶対値とはabsとしてあらわすということはわかったのですが具体的な例が調べてもなかったので、このような質問をしました。

関連するQ&A

  • fortranのプログラム

    fortranのプログラム 現在、fortranの勉強をしております。 そこで、質問があるのですが、 ある関数f(x,y,z)の座標(x,y,z)の値がデータとして与えられているとき、 S=10+f をfortranで計算したいと考えております。 ただ、関数fは複数(f1、f2、f3)あり、次々とfに代入してSを計算したいのですが、どのようにプログラムしたらいいか思いつきません。 どなたか、ヒントだけでもいいので、教えてください。 ちなみに、私が考えたプログラムは(下のプログラムはポイントだけ書いてあります。endやその他関係ないと思われるところは省いております。) do 100 k=1,3 S=S+fk(x,y,z) continue function f1 f1(s,t,u)=・・・ return end f2(s,t,u)=・・・ return end 使用しているバージョンは、fortran77(本当は90を使っているのですが、77だけで書いています)です。

  • FORTRANプログラミングです

    y=xtanx と y=√1-x^2 の式の交点をFORTRANプログラムで書くと どの様になるのか教えていただけないでしょうか? プログラミング初心者です。 よろしくお願いします。

  • Fortranでの記号「./」について

    Fortran 90で書かれた数値計算プログラムを、より専門的な言語に書き換える作業を行っています。 Fortranを学んだことがないのでインターネット等で関数の意味や書式を調べながら作業しているのですが、 「X./Y」という式の意味がわからずに困っています。 単純に「X/Y」とはどう違うのでしょうか。 初歩的な質問で申し訳ありませんが、よろしくお願いします。

  • Fortranで出力したファイルの内容を並べ替えたいです

    いま、Fortranをつかって統計物理の解析を行っています。計算結果は --- 時刻T1 AのX座標 AのY座標 AのZ座標 BのX座標 ・・・ 時刻T2 AのX座標 AのY座標 AのZ座標 BのX座標 ・・・ ・ ・ ・ --- という具合に出力されるのですが、この形式では都合が悪いことがあって --- A T1 X Y Z T2 X Y Z ・ ・ ・ B T1 X Y Z T2 X Y Z ・ ・ ・ C --- と言う感じに出力したいのですが、それぞれの物体が独立して運動するわけではないので、どうしても上の形式で一度出力してからほしい形式に変換しなればなりません。私はFortranしか使ったことがないのでできればFortranで並び替えを行いたいのですが、このようなことがFortranでできますか?また、Fortranでこのような並び替えをするにはどうすれば良いのでしょうか。御教授よろしくお願いします。

  • BASIC→FORTRAN

    DEF FNRMIN(Z)=Z-(1+SGN(ABS(Z)-SL2-.000001*SGN(Z)))*SGN(Z)*SL2 ↑このBASICプログラムからFORTRANに直すにはどのような書き方すればいいですか?

  • FORTRANのCOMMONについて

     最近、FORTRANについての勉強を始めたものですが いまいち「COMMON」の意味が理解出来ません。 例えば下のようなプログラムで(簡単に書きすぎてすいません)   (Aグループ)       COMMON X         X=10   (Bグループ)       COMMON Y    (UEXTERNAL)       COMMON X. Y。     WRITE X     X=10と出力されるのでしょうか? 分る範囲でいいのでお願いします。

  • BLOCK構造体とFORTRAN

    fortranでプログラムを組むことになったのですが、これまでプログラムを組んだことがなかったので困っています。 gridgenで作成した.grdファイルをfortranで読み込ませることがうまくできません。 原因は、.grdのフォーマットがBLOCK構造体であるからだと考えています。 POINT構造体なら読み込めることが分かっているのですが…。 そこで質問です。 BLOCK構造体である「.grd」ファイルを読み込み、POINT構造体の「.dat」ファイルを出力するプログラムをfortranで組むにはどうしたらいいですか? BLOCK構造体とは以下の形式。 X1 X2 X3 X4 X5 …Xn Y1 Y2 Y3 Y4 Y5 … Yn Z1 Z2 Z3 Z4 Z5 … Zn POINT構造体は以下。 X1 Y1 Z1 X2 Y2 Z2 X3 Y3 Z3 X4 Y4 Z4 X5 Y5 Z5 … … … Xn Yn Zn

  • FORTRAN→Cに翻訳

     どなたか、次のFORTRANのプログラムを、Cに、翻訳して頂けないでしょうか。C++ではなく、Cです。ANSI準拠のCでお願いします。  プログラムの内容は、最小二乗法による計算プログラムです。MS-DOS Ver3.3~6.0の頃の、MS FORTRANコンパイラ仕様のものです。その頃持っていたFORTRANの本も処分してしまい、今からFORTRANを学びなおすのにも多大な労力と時間がかかりそうなので、Cに翻訳して頂ければ大変ありがたいです。よろしくお願いします。 (“□”はタブ) ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆ C□LEAST SQUARE APPROXIMATION □PROGRAM MAIN9 □DIMENSION X(100),Y(100),S(0:18),T(0:9),SM(10,10),TV(10),AV(10) □WRITE(*,*) 'N ?' □READ(*,*) N □WRITE(*,*) 'x1,x2,..,xn ?' □READ(*,*) ( X(I),I=1,N ) □WRITE(*,*) 'y1,y2,..,yn ?' □READ(*,*) ( Y(I),I=1,N ) □WRITE(*,*) 'M ?' □READ(*,*) M □DO 110 K=0,M*2 □□VS=0. □□DO 100 I=1,N □100□VS=VS+X(I)**K □□S(K)=VS □110□CONTINUE □□DO 130 K=0,M □□□VS=0. □□□DO 120 I=1,N □120□VS=VS+Y(I)*X(I)**K □□□T(K)=VS □130 CONTINUE □□DO 140 I=1,M+1 □□□DO 140 J=1,M+1 □□□□K=I+J-2 □□□□SM(I,J)=S(K) □140 CONTINUE □□DO 150 I=1,M+1 □150 TV(I)=T(I-1) □□CALL SIMULE( AV, SM, TV, M+1 ) □□DO 160 I=1,M+1 □160 WRITE(*,1000) I-1,AV(I) □1000 FORMAT(1H ,'A',I1,'=',F10.5) □□STOP □□END ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆

  • FORTRANのプログラミングについて

    たびたび申し訳ありません。 またFORTRANに関しての質問です。 x y z 0 0 30 1 0 45 2 0 60 3 0 43 4 0 51 5 0 32 0 1 43 1 1 90 2 1 32 3 1 85 4 1 65 5 1 90 0 2 32 1 2 32 と続くファイルがあります。これをFORTRANをで書き換えて、 0 0 30 0 1 43 0 2 32 1 0 45 1 1 90 1 2 32 と続くデータにしたいのです。(これを以下目的のファイルという) 今のところ、次のようなプログラムを書き、特定のXに対しては、結果を吐き出すことに成功しています。 program dat real x1(100),h,y2(100),y1(100),z1(100) integer i,n,j,k,l,m,a(100) open(7,file='test.txt') open(9,file='af-test.dat') do i=1,100 read(7,*,end=200) x1(i),y1(i),z1(i) if(x1(i).eq.90)then write(9,*) x1(i),y1(i),z1(i) end if end do 200 close(7) close(9) end ここまではうまくいくのですが、これでは90以外の場合は出力されません。(あたりまえですが) 特定のXに限らずに例えばXを0から100まで吐き出されるような目的のファイル作るにはをどのようにしてプログラムを書けばいいかご教授ください。

  • Fortran でのマイナス乗数の書き方

    Fortranで、マイナスの乗数の書き方についてお尋ねします。 cosθのマイナス1乗をプログラムで表したいのですが、どのように書けばいいでしょうか。 実際に行いたい計算は、経緯度の2点間の距離で、下記のように記述してみましたが 行最後の**-1でエラーがでています。 Fortran記述式 2点間距離 = r*(cos(sin(y1)*sin(y2)+cos(y1)*cos(y2)*cos(x1-x2)))**-1) 計算したい式 2点間距離 = rcos^-1(siny1siny2+cosy1cosy2cos(x1-x2)) Fortran v4.1.2(g95 0.93)を使用しています。 初歩的なこととは存じますが、よろしくお願いいたします。

専門家に質問してみよう