• ベストアンサー

fortran90

fortran90で、シンプソン1/3 公式による自動積分プログラムを作る際の質問です。例えば円周率を求めるとして精度を10^(-6)までにするにはどうすればよいですか?どーしても10^(-4)が限界です。

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

  • ベストアンサー
  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.1

質問の内容から直接正解を回答することは無理ですが(計算の順序が分からないので)、演算精度の限界に近いところでの計算結果の精度は、演算の順序によって大きく左右されますので、四則演算の順序を見直してみてはいかがでしょうか。 どうしてもダメなら、変数を単精度ではなく倍精度にする・・・のは反則かな。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.2

質問の内容から直接正解を回答することは無理ですが(計算の順序が分からないので)、演算精度の限界に近いところでの計算結果の精度は、演算の順序によって大きく左右されますので、四則演算の順序を見直してみてはいかがでしょうか。 どうしてもダメなら、変数を単精度ではなく倍精度にする・・・のは反則かな。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • FORTRANをご存じの方がいらっしゃいましたら、間違いを指摘していただきたいです。

    大学で現在FORTRANのシンプソン公式の課題が出ています。 自分で考えて下記プログラムを作ったのですが、どうしても 正しい答えが出力されません。 正しい答えとしては、分割数4とか5とかで πに限りなく近い値になるそうです。 (下に添付した物は、分割数を4にしています。) もしFORTRANをご存じの方がいらっしゃいましたら どこがどのように間違っているのか、ご指摘いただけないでしょうか? よろしくお願いいたします。 問題 4/(1+x^2)を、積分範囲:0~1 を、シンプソン公式を使って求めよ。 区間分割数については、各自適当に与え 分割数が多くなると精度が良くなる事を確認せよ。 シンプソン公式を使うと台形公式を使う場合より 少ない分割数で解(=π)に近づくか確認せよ。 ***ここから*** c numerical value integral c trapezoid formula c *** main program *** real a,b parameter (n=4) a=0 b=1 call simpson(a,b,n,sumf) write(*,*) 'sumf=',sumf end c *** end of main program *** c *** sub program *** subroutine simpson(a,b,n,sumf) dimension f(1000) m=2*n h=(b-a)/float(m) do 10 i=1,m+1 x=a+h*float(i-1) f(i)=func(x) 10 continue sumf=h/3.0*(f(1)+f(m+1)+4*f(m)) do 20 i=2,m sumf=sumf+4.0*(h/3)*f(2*i+1) 20 continue do 30 i=2,m sumf=sumf+2.0*(h/3)*f(2*i) 30 continue end c *** end of sub program *** c *** function sub program *** function func(x) func=4.0/(1.0+x**2) return end c *** end of function sub program *** ***ここまで*** もしお分かりになる方がいらっしゃいましたら、 お手数ですがご指導いただけないでしょうか? お願いいたします。

  • fortran90での三重積分

    fortran90での台形公式を用いた三重積分について悩んでいます。 台形公式を用いた定積分は色んなサイトを見て何となく理解しました。 三重積分は恐らく、3つのfor文の入れ子によるものだと予想できますがソースコードがなかなか記述できません。 被積分関数(例えばf(x)=x^3+y+z^2)をfunctionで定義したいのですが、どなたか御教授願います。

  • 数値積分

    シンプソンの公式と台形公式のプログラムで∫e^-x*x(0~∞)の積分値を求めたいんですが∞をどうやって表すのか分かりません。教えてください。

  • Fortranの問題二問目です。急いでます><

    最初に, (x,y) = (-2, 8), (0, -2), (1, 2), (2, 20) の4点を通る3次曲線の式を,ラグランジュ補間の公式を使って求めよ. (紙と鉛筆で計算すること) 求めた曲線の式について,小さい方の2つの解(x軸と交わる点のx座標) を ニュートン法 により求めて画面に表示 したのち, 求めた曲線と,x軸とで構成される領域で,yの値が正となる部分 (x軸より上,下図のオレンジ色に塗った部分)の面積を シンプソン法で求めて,画面に表示するプログラムを作成しなさい. (実行を確認し,プログラムを貼りつけて送信しなさい.) 注:1つのプログラムを実行するだけで解(面積)を表示すること.   ニュートン法の初期値はプログラム内で定数として設定してよいが,   積分区間は定数をプログラムに記入せず,ニュートン法で求めた値を   利用すること.   つまり,ニュートン法の結果を「積分区間」として用いる.   シンプソン法による積分における区間の分割数は,無駄に大きすぎない   適切な値とすること.(自由に設定してよい) ヒント ラグランジュ補間の公式で求める曲線の式は比較的シンプルなものになる. (あまり複雑な式になってしまうようなら計算ミスをしている) 4点の座標を代入して,曲線の式の正否を確認せよ. ニュートン法で計算するために,曲線の式の微分も必要です.

  • MS-FortranとFortran90

    私は研究でFortran90を使っているのですが、研究に使うプログラムはMS-Fortranを用いて書かれているものでした。 そこで質問なんですが、MS-FortranとFortran90の違いについて知っている方がいれば教えてください。 また、MS-FortranでかかれたソースコードをFortranにコピーした時に何か弊害はあるのでしょうか?(人づてに弊害が起こると聞いたことがあるのですが・・・)。 プログラミングを本格的に始めて、まだ3ヶ月ほどで用語の使い方がわかりにくいところがあるかもしれませんがよろしくお願いします。

  • Fortranについて

    私は今大学生のものです。 今卒業研究でFortranのプログラムを用いています。しかし私はプログラミングには疎く、独学で勉強しようと思うのですがなにか初心者にわかりやすいお勧めの本、サイトなどはあるでしょうか? 本屋に行ってもFortranの本は販売されておらず、通販では手にはいるのですがどの本がいいのかわかりません。是非教えていただければと思いここに書き込ませていただきました。 また、家でもFortranのプログラムをコンパイル、実行できる環境をつくりたいのですがどうすればよろしいでしょうか? 学校ではcygwinをインストールして行っていますが家でもcygwinをインストールすればいいのでしょうか? また今もととなるプログラムはあるのですがこのプログラムはLinux上では正常にコンパイルされないところがあるらしく書き直さなければならないらしいのですがLinux上でのFortranのプログラムは普通のFortranのプログラムとは違うのでしょうか?ちなみに学校のパソコンのOSはWindows Vistaです。 初心者の質問ばかりになってしまってすみません。自分でしっかり学びたいと思うのでぜひ教えてください。

  • FORTRANプログラムについてお聞きします。

    仕事で1970年代にFORTRAN77で作られた技術計算(発電所の熱精算)プログラムを使っています。(私はプログラムは使っていても、作ったことのない、ほとんど素人です) このプログラムの規模として、総ステップ数が約60kステップ有ります。 このたび、このプログラムをMATLABに移植することになりました。 移植の理由は、FORTRANそのものが古い言語で、機能拡張などのメンテナンスを依頼しているソフト会社には、FORTRANの分かるエンジニアがいなくなったこと、だそうです。 (MATLAB使用は会社の指示です) そこでお聞きしたいのは以下の点です。 1.FORTRANとは、そんなに古い言語になってしまったのか? 2.MATLABはある精度内で収束するように繰り返し計算するようなプログラムに向いているのか? 3.MATLABのネット記事のほとんどが大学関係者ばかり。企業では使われていないのか?だとしたら、その理由は? 4.MATLABの利点と欠点を述べた記事などがあったら紹介して下さい。 宜しくお願いします。

  • 積分

    一気に答えだけを表示するシンプソンの公式と台形公式のプログラムは分かったんですが計算過程も出せるその二つのプログラムを教えてください。求めたいのは∫e^-x*xdx(0~∞)の定積分の値です。

  • Fortranとgnuplotについて困っています

    Fortranとgnuplotについて困っています こんにちは。 現在、Fortranプログラミングでgnuplotを使用した座標出力プログラムを考えているのですが、いまいちわかりません。 中心(0,0,0),半径1の級の球面上の座標を出力するプログラムを考えています。その際 ・z>=0のときだけでよい ・gnuplotで確認できる ・Fortranのプログラムファイルでまとめる。 以上を満たすものを考えています。内容自体は基本的なことだとは思いますが、いまいち勝手がわからず困っています。 拡張子.f90でどのようなファイルを作ればいいのか教えていただければ幸いです。

  • Fortran90, ランダム(Cooperate or Defeat)

     こんにちは。Fortran90に関して質問があります。囚人のジレンマをプログラムしようとしているのですが、 その際にひとつわからないことがあります。  たとえば、2つの選択肢があり(cooperate もしくは Defeat)、その二つの中から、不規則にプログラム実行時にFortranに選ばせることは可能なのでしょうか?もし可能であれば、どのようにできるのでしょうか?教えて下さい。

このQ&Aのポイント
  • スマホアプリからのカラープリントで赤みがかった色合いになる問題について相談いたします。
  • スマホのアプリ(iPrint&Scan)を使用して写真をプリントすると、色合いがおかしくなる現象が発生しています。
  • スマホからプリントする際には赤みが強くなり、普通の紙をコピーする場合とは違った色合いになります。
回答を見る