• 締切済み

現在、情報処理試験の勉強をしているのですが、

現在、情報処理試験の勉強をしているのですが、 桁落ち誤差がなぜ誤差なのかが分かりません。 有効数字(有効桁数)が減少する事の何が問題なのか、 正規化されて仮数部には0が入るだけで、 0なんだから、 誤差(誤った差)なんて無いように思えるのですが。。 複数のサイトを見てみましたが、 まとめると以下の3つのパターンの解説に大別できるように思われます。 (1)有効桁数が減少する事を桁落ち誤差と言う ⇒桁落ちによりどのような誤差が発生するのか解説がなく。 (2)正規化された部分に0以外が入ることがある。(プログラミング) http://www.k-cube.co.jp/wakaba/server/numerical_problem.html ⇒正規化された部分には0が入るという前提があるので、  このサイトの桁落ちと  情報処理試験の桁落ちは前提が違う。 (3)科学技術計算では2と2.000は違うので、  桁落ちは問題 http://itpro.nikkeibp.co.jp/members/ITPro/ITBASIC/20010719/5/  ⇒だいぶ探している答えに近い気はするが、   具体例がなく良く分からず。。 具体的な例で何が問題なのかを、 どうして誤差が発生するのか、 ご教授頂ければ幸いです。。

みんなの回答

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

http://ja.wikipedia.org/wiki/誤差 の「2.4 桁落ち」で例示されている √1001 - √999 で説明します。 (計算機内部は本当なら仮数も基数も2進数ですが,メンドウなので以下,10進数の浮動小数点数形式を用います) √1001 は 31.63858403911275… と続く無限小数です。 「0.仮数 × 10の指数」という形式で表現するなら, 「0.3163858403911275… × 10の2乗」です。 √999 は 31.60696125855821… と続く無限小数です。 こちらは「0.3160696125855821… × 10の2乗」です。 -------- 次に,仮数部の長さが8桁(有効数字が8桁)の浮動小数点数形式の変数を用いて, √1001 - √999 を計算してみます。   0.31638584 × 10の2乗(=√1001) - 0.31606961 × 10の2乗(=√999 ) ―――――――――――――――――   0.00031623 × 10の2乗    ↓仮数の正規化   0.31623000 × 10の-1乗 ■結果その1■ さて。 √1001 の仮数は本来 0.31638584 だったのでしょうか? 違います。精度が8桁だからそれ以降を仕方なく丸めただけで,本来は 0.31638584[03911275…] と小数部が続く数でした。√999 も同じ。 したがって,計算途中の精度を維持できていれば,計算結果は次のようになります。   0.31638584[03911275…] × 10の2乗(=√1001) - 0.31606961[25855821…] × 10の2乗(=√999 ) ―――――――――――――――――   0.00031622[78055454…] × 10の2乗    ↓仮数の正規化   0.31622[78055454…] × 10の-1乗    ↓精度8桁に丸める   0.31622780 × 10の-1乗 ■結果その2■ -------- 結論です。 最終的に計算結果を格納する変数が,仮数の長さ8桁という同じ形式の浮動小数点数であっても, ほぼ等しい数同士の減算をおこなえば,   0.31623000 × 10の-1乗 ■結果その1■ のように,仮数の正規化による左3桁シフトにより末尾に無意味な0が3つ並んだ,すなわち有効けた数が実質5桁しかない「けた落ち誤差」を含んだ値になります。 反対に,計算途中における仮数長を十分長く確保していたり,計算の工夫によってほぼ等しい数同士の減算をおこなわないようにすれば(前述のja.wikipediaを参照),   0.31622780 × 10の-1乗 ■結果その2■ のように,8桁の有効けた幅をいっぱいに活かした結果を求めることができます。 (ちなみに 0.31622780 の末尾の0は無意味な0ではなく,計算の結果求められた精度としての意味を持つ0です,念のため)

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

桁落ちはまず例を1つ理解してから理解・検討を発展させるのがいいでしょう。 有効桁数6桁の計算機を考えます。 A=10003/7-10002/7を計算すると A=1429-1428.8571428571・・・・・・  =1429.00-1428.86=0.14(コンピュータ出力)   正規には0.14285714286・・・ 1/7=0.142857(コンピュータ出力) 有効数字が2桁と6桁と大きく差が出ます。 なぜかは別にして計算順序を変えるだけで簡単に桁落ちが起こってしまうのです。 コンピュータは有限桁数なので、計算順序を考えなさいよと言う啓蒙が 桁落ちや情報落ちです。 理屈はあとからついてきたのです。

関連するQ&A

  • けた落ちが誤差の理由は?

    けた落ちが誤差の理由が理解出来ていません。 有効桁数が減少するしても、計算結果に誤差は出てないようなので、なぜだか分かりません。 123.456 - 123.455 = 0.001 上記で有効桁数6桁から1桁になりますが、誤差の理由を教えて頂きたいです。 よろしくお願いします。

  • けた落ちについて

    「けた落ち」が誤差となりうる理由について、ご教示ください。 書籍やネットで調べると、有効桁数が減少するから誤差となりうると記載がありますが 有効桁数が減少するからといって、なぜそれが誤差になるのかが 全くわかりません。 情報落ちや丸め誤差 が誤差というのは当然であり納得できるのですが。。。 可能であれば、誤差となる具体例と合わせてご教示いただけると幸いです。 ご教示のほど、お願いいたします。

  • 情報処理試験の問題がわかりません。助けてください。

    情報処理試験の問題がわかりません。助けてください。 ある整数値を、負数を2の補数で表現する2進表記法で表すと最下位2ビットは”11”であった。10進表記法のもとで、その整数値を4で割ったときの余りに関する記述として、正しいものはどれか。ここで、除算の商は、絶対値の端数が切り捨てられるものとする。 - ア その整数値が正であれば3 イ その整数値が負であれば3 ウ その整数値が負であればー3 エ その整数値の正負にかかわらず0 解答 ア - 情報処理試験の問題です。 どなたかわかりやすく、解説していただけないでしょうか? よろしくお願い致します。

  • 情報処理試験の問題について

    情報処理試験の問題について 今、情報処理試験(資格)取得に向け勉強中ですが 21年度秋期の問1の問題でなぜその解答になるのか分かりません。 どなたか ご解説頂きたくよろしくお願い致します。 問 N個の観測値の平均を算出する式はどれか? ここで、SはN個の観測値の和(だだし S>0)とし[X]はX以下で最大の整数とする。 また、平均値は、小数点1位を四捨五入して整数値として求める。 ア:[S/N-0.5] イ:[S/N-0.4] ウ:[S/N+0.4] エ:[S/N+0.5] 答えは エ です。 また、21年度秋期の問題解説のHPなどありますでしょか? 21度春期はあったのですが・・・

  • 情報処理試験の問題と答えの著作権 公開は可能ですか?

    情報処理技術者試験を受験し、問題用紙を持ち帰りました。 このうちいくつかをホームページで公開し、その解説を載せても 問題ないでしょうか? また、回答集などで商用利用した場合はいかがでしょうか? よろしくお願いいたします。

  • 情報処理試験の問題で理解ができずご教授願います。

    情報処理試験の問題で理解ができずご教授願います。 情報処理資格を取得しょうと勉強していますが 下記問題の意味が分かりません。 どなたか分かりやすくご解説頂きたくよろしくお願い致します。 問題(20年秋の問50) IPアドレスが192.168.0.Xで、サブネットマスクが255.255.255.0の TCP/IPネットワークでブロードキャストアドレスはどれか? ア:192.168.0.0  イ:192.168.0.255 ウ:192.168.255.0 エ:192.168.255.255 回答:イ 解説には ブロードキャストアドレスは該当のセグメントで一番大きなIPアドレスです。 問題文では192.168.0.Xでサブネットマスクが255.255.255.0なので このセグメントで一番大きいIPアドレスは192.168.0.255となります。 との解説があります。 なぜ 192.168.0.255 が一番大きいアドレスになるのですか?

  • 基本情報試験の問題で

    基本情報試験の勉強で、この問題がよく意味がわかりません。答えはエだそうですが、どうしてこうなるんでしょうか?解説をお願いいたします。 ●2進の浮動小数点表示で誤差を含まずに表現できる10進数はどれか。 ア 0.2  イ 0.3 ウ 0.4       エ 0.5

  • 情報処理技術者試験(高度)の午前Iが受かるテキストを教えてください。

    去年の秋に、情報処理技術者試験を受けたのですが、午前Iの問題で54点 しか取れなくて不合格になってしまいました。 以前セキュアドの試験を受 けていてあとちょっとのところまできていたので、その後継の資格である セキュリティスペシャリストの資格を取りたいのですが、午後II~午後の 問題はなんとかなりそうなのですが、午後Iの試験だけ合格点に届くか不安 です。市販のテキスト(練習問題を解く感じの)の解説を読んでも、解説の 途中で、なんでこうなるんだぁ~ってなってしまい、根本的な理解ができて ないです。 何か午前の問題をカバーしている教科書みたいなものはないで しょうか? 市販されているものでお勧めなのを教えてください。 集合演算とかベン図とか回路図とか、短い解説文だけだと理解できません。

  • 14桁の16進数を10進数で表した時の桁数

    いつもお世話になってます。 情報処理技術者試験の問題で分からない部分があったので質問させて頂きます。 ***問題 14桁の16進数を10進数で表した時の桁数 但し、log10(2) = 0.301とする。 ***解答 log10(16^14) = 14 * log10(16) = 14 * log10(2^4) = 14 * 4 * log10(2) = 14 * 4 * 0.301 = 16.856 繰り上げて答えは17桁になります。 質問ですが何故、14桁の16進数の最大値の桁数が16^14と同じになるのかが分かりません。 14桁の16進数の最大値は16^14 - 1になるので、 桁数も16^14 - 1と同じになるのではないのでしょうか。 基本的な事を見逃している気がします。 解答宜しくお願い致します。

  • この問題のやり方教えて!数値計算の問題です

    この問題の解答を教えてください 平方根の値が有効桁数7桁で求まるとするとき、1001^(1/2),1000^(1/2)の近似値はそれぞれ31.63858, 31.62278となる。このとき1001^(1/2),1000^(1/2)の差の値を桁落ちしないように求めよ。 よろしくお願いします

専門家に質問してみよう