• 締切済み

計算時間の精度

 現在,OSがWindows2000でtimeGetTime関数をtimeBeginPeriodと一緒に使用しています. そこでtimeGetTimeの精度を検証するために,timeGetTimeの間に「1+1」を複数回入れてtimeGetTime関数の精度を検証しました.  結論から言うと「1+1」の計算回数を多くするほど標準偏差が増加する傾向がみられました.  前置きが長くなりましたが,ここからが質問です. 「1+1」のような計算の計算時間は一定なのでしょうか? この標準偏差の増加の原因がtimeGetTimeの誤差の蓄積なのか,「1+1」の誤差の蓄積なのか,どちらの影響が大きいと考えられるのか教えてください. 宜しくお願いします

みんなの回答

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.2

timeGetTimeはWindows起動からの経過時間をms単位 で返すもののようですね。ということは、他のプロセスが実行されている場合にも進んでしまいます。あなたが行った手法ではtimeGetTimeの精度は測れません。 1+1のような計算の所要時間は一定ではありません。というのも、他のプロセスの動きその他によって、CPUのキャッシュがヒットしたりミスしたりで、所要時間が変動するからです。

  • keibou21
  • ベストアンサー率31% (18/58)
回答No.1

どのコンパイラをお使いか記述されていませんので正確なことは言えませんが、 最近のコンパイラでは「定数+定数」の結果はコンパイル時に決定して普遍ですので、ソースコード上は1+1でもコンパイル結果は定数の2になっているはずです。 ですので、正確には"計算時間が一定"という表現は当てはまりません。 さて、本題ですが純粋にtimeGetTimeを呼び出したときのオーバーヘッドが原因かと思われます。

関連するQ&A

  • FFTの単精度と倍精度の計算時間

    FFTのプログラミングで計算時間を短縮するため、三角関数の計算にチェビシェフの三項漸化式を用いたところ、計算時間はかなり短縮されました。ただ精度が心配なので、組み込み関数の三角関数の倍精度結果と、漸化式の単精度および倍精度の結果を比較したところ、2000点を越えるあたりから単精度ではかなりの誤差が生じましたが、倍精度では問題ありませんでした。そこで質問ですが、単精度と倍精度の違いとして、「精度とメモリが倍」は分かるのですが、計算時間はどうなるのでしょうか。 参考:チェビシェフの三項漸化式 cos{(j+1)*h} = 2*cos(h) * cos(j*h) - cos{(j-1)*h} sin {(j+1)*h} = 2*cos(h) * sin(j*h) - sin{(j-1)*h}

  • 計算精度(限りなくゼロに近く)

    現在、fortranで大きな数値計算をしています。 そこで、計算回数が多く、その計算過程において大きい値と小さい値とを何回も計算していると誤差が次第に大きくなっていきます。 A=BとなるようにA(又はB)を求めるときの判別としてabs(A-B)<10**(x) としています。 このxに-300ぐらいの値をいれ判別したいのですがそれは可能ですか? もちろん計算には倍精度を使っていますがabs(A-B)が10**(-17)付近になると値が一定になってしまいます。これがfortranの限界なのでしょうか?

  • 精度と確率誤差

    10ml容ホールピペットの器差を求める実験を行なったんですが、この実験の精度を測ることができません。 各計算結果は以下のように出ました。 ホールピペットの20℃における内容積を調べたところ、9.974、9.973、9.980という結果が出た。 この平均値は9.976、標準偏差は14.11、確率誤差は9.517であった。 この中で上の確率誤差に着目して精度を測りたいんですが、イマイチ確率誤差の定義が分かりません。 確率誤差と精度はどのように関連していますか? この実験における確率誤差からは精度に関してどのようなことが言えますか? 有識者の方ご指南お願いします。

  • 推測の精度を求めるには?

    プログラムを作って、日によって異なる、ある行動を起こした時間を推定しました。実際にその行動を起こした時間と比較して、このプログラムの精度を求めたいと考えました。 実際に行動を起こした時間が、3日間で、 A1- 6:18, A2- 10:21, A3- 12:38... プログラムで推測の時間が B1- 6:30, B2- 10:11, B3- 12:53... とすると、誤差(偏差?)は(12,-10,15...)となります。これは、ほぼ正規分布に従っていました。この誤差の平均や、標準偏差などが精度の指標になると思っていますが、正しい方法と、そういった値の正しい名称を教えていただきたいです。

  • 測定したデータの誤差を計算する方法

    集めたデータのばらつきを求めるときに使う計算法として、標準偏差がありますが、「誤差=平均値±標準偏差」と考えていいのでしょうか? ほかに標準誤差というのがあるようなのですが、説明を読んでも何を意味している誤差なのか理解できません。 ちなみに、データは以下の通りです。 データ数:60 最高値:39.00 最低値:11.00 平均値:22.56 標準偏差:5.261 標準誤差:0.679(5.261/√60) 標準偏差を誤差と考えると22.56±5.261で、総データの70.0%が含まれます。 標準誤差を誤差と考えると22.56±0.679で、総データの10.0%が含まれます。 回答よろしくお願いします。

  • 正規分布の母平均が既知、標準偏差が増加か一定のとき

    正規分布の母平均が既知(可変)で、標準偏差が平均に対して増加関数である時、 (確率変数X,Yの密度関数がそれぞれfX,fY で与えられる) fx(x)/fY(x) >= fx(y)/fY(y)  --(1) を満たすことを証明するにはどのような方法がありますでしょうか。 数値計算よりも理論的に検証したいです。 また、母平均は既知で可変、標準偏差が一定の時も上記の関係(1式)を満たすかどうかも調べたいです。 どのように式展開をすればよいか教えてください。 よろしくお願いいたします。

  • 測量での「誤差」と「精度」の検証について

    大学の「測量学」課題について教えてください 課題内容は 1.まず、ある五角形を、2つの方法で三角形に分割する   (1)「放射法」(三角形が5つできる)→【五角形1】とする   (2)五角形の1つの頂点から放射状に線を延ばして分割     (三角形が3つできる)→【五角形2】とする 2. 1で分割した五角形の面積を計算する   (1)【五角形1】を「ヘロンの公式」を用いて面積計算   (2)【五角形2】を「ヘロンの公式」を用いて面積計算   (3)【五角形2】を「S=(b×c×sinA)/2」(2つの辺と挟まれた角)     を用いて面積計算   結局、3つの面積の計算結果が得られる 3.上記1と2について、図上での測量及び面積の計算結果を比べ、   精度を検証して、その誤差について考察せよ 1、2は出来たのですが、3の意味がよくわかりません。 何か計算式を用いて考察するということでしょうか 図面はCADで作るので、元になる五角形は3つとも全く同じ大きさのものを使用しています 教科書には「○○誤差」という項目がたくさんあるのですが、どんな誤差が今回あてはまるのか、 「精度の検証」とはどうすればいいのか、 三角形の分割した時の辺と角についても誤差を考えよと言っているのか・・・。 実際に測量した数値の、誤差の処理法などはたくさん載っているのですが 異なる方法で計算した面積の考察は見当たらず、すごく困っています。 どのように考え、まとめるものなのか検討もつかない状態です ちなみに、測量学では小数点以下の処理に四捨五入は使わないものなのでしょうか? 通信教育なので授業がなく、聞く人がいない上に、レポート期限が迫っていてとても困っています 「恐らく○○を考えればいいんじゃ・・」みたいなことでもかまいませんので どなたかわかるかた、教えてください!!

  • エクセルでのエラーバーの入れ方

    3つデータがあって、それぞれにエラーバーを入れたいのです。 関数でそれぞれ標準偏差を計算し、それをY誤差範囲の標準偏差のところに数値をいれても何も表示されません。どうしたらよいのですか教えてください。お願いします。

  • 誤差の計算 

    実験値の誤差の計算値について質問です。 とある実験値を標準偏差0.5%以内で求めています。 これをAとして、同様に標準偏差0.5%以内で求める他の実験値Bがあります。 この2つのかけ算をして求めたい数値を出すのですが、このA×Bでの標準偏差はどのような数字になるのでしょうか? 知見のある方がいらっしゃいましたらアドバイスいただければと思います。

  • デジタルテスターの精度の計算方法

    ある解説書に、 精度が±(0.7%rdg+3dgt)の場合 DC200 VOLTレンジで真値(標準電圧)100VOLTを測定した場合の精度の計算方法として、次のように書かれていましたが意味がわかりません。 →真値が100VOLT、レンジが200VOLTなので最終桁は0.1VOLTとなり、 100VOLT×(±0.8%)+0.1VOLT×(±0.8VOLT)=(±0.8VOLT)+(±0.8VOLT) =±0.9VOLTとなり、測定値(表示値)は100VOLT±0.9VOLTの範囲内である。 自分としては、単純に測定値が100VOLTの場合、0.7%を考慮して 誤差(精度)は、100VOLTの0.7%ぶんの7VOLT。 それにdgtの部分を更に追加した合計の7+3=10VOLTで 結果的に精度は、±10VOLTである、90~110VOLTが精度値だと思っていました。 しかし解説書では上記のように、そうではない書き方です。 自分の考え方は間違えているのでしょうか? わかりやすい説明で教えて頂ければありがたいです。 おわかりの方がいれば宜しくご回答お願い致します。

専門家に質問してみよう