5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

数値計算の誤差

1 :びぎなあ:2000/05/20(土) 09:30

丸め誤差って何ですか? 打ち切り誤差って何ですか? よく分らないのです。
他に知っておかなければならない誤差にはどんなのがありますか?
どなたか、例を用いて教えてください。 よろしくお願いします。

2 :こういう基本的な事は:2000/05/20(土) 19:10
まず本で勉強してから、分からないところを聞くように。

3 :名無しさん@1周年:2000/11/01(水) 09:22

打ち切り誤差: 混むピューターの扱える数字は有限桁です。例えば、1,2,3,4.11,
19.193847459,0.100083, etc。従って、1/3 は0.333333......
のどこかで切れてしまいます, 例えば0.3333。どこで切れるかは
精度の問題でこれが単精度、倍精度などと言われるものです。
と言う訳で、この切れてしまった部分を打ち切り誤差と言います。

丸め誤差: 。。。。。。。。。。。。。。。。。。。。。。。。。。。。?


4 :丸め誤差と打ちきり誤差:2000/11/01(水) 11:30
単精度計算と倍精度計算を有効数字7桁で比較すると、
結果にズレがある。これは単精度計算が有効桁数を超える
部分を切り捨てまたは四捨五入して行なわれていること
から来るもので、この種の誤差を丸め誤差と呼ぶ。

 打ちきり誤差はアルゴリズムに由来するもので、実例を
挙げたほうが分かりやすい。円周率の計算にシンプソンの
公式を当てはめることを考えてみよう。この場合、一般に
近似式の次数が増えるとそれだけ精度が上がる事が知られ
ているが、この種の計算の時は丸め誤差がないとしても
ズレが出る。これは次数を低くして計算を打ちきった事に
よるもので、この種の誤差を打ちきり誤差という。
(古い言い方です。round off error と cut off
error と英語で書くと分かりやすいのですがね。)

「FORTRAN77入門」倍風館 S62 第15版 105ページより


(ついでに言えば、”既出”です。前の2chサーバの時には
見かけました)


>>3
near pin 賞をさしあげましょう

5 :ハイバンド名無しさん:2000/11/04(土) 13:46
丸め誤差っていうのは誤差に誤差がかぶって雪だるま式に誤差が
増える事だよ。
はじめ1桁の誤差だったのが計算が進むにつれ3桁の誤差になって
いく。さらにすすむにつれ・・。まぁこんな感じ。

6 :名無しさん@1周年:2000/11/09(木) 21:59
そういやマシンεの計算法ってどうだっけ?
誰か教えて


7 :>6:2000/11/10(金) 03:16
これを使ってみては?
http://www.asahi-net.or.jp/~UR6K-MR/fortran/fortran.htm

8 :名無しさん@1周年:01/10/04 13:00
期待あげ

9 :名無しさん@1周年:01/10/07 14:04
http://www.tohgoku.or.jp/~hoimin/

10 :名無しさん@1周年:01/10/08 15:31
>5
ウソ言わないように。

丸め誤差は

0.1234567
+)0.0001234567
--------------
0.1235801567 → 0.1235801
みたいにコンピュータの有効桁数を超えた数値が
丸められることを言います。

11 :名無しさん@1周年:01/10/08 20:11
削除依頼

理由
駄スレです。

12 :名無しさん@1周年:01/10/09 06:02
削除対象外です

13 :名無しさん@1周年:01/10/09 17:43
0.0000001 +
2.6034584 =
2.6034584

単精度でこの結果が出る。
なんで?

14 :名無しさん@1周年:01/10/09 21:36
/*
1/k*sqrt(k) ( 1 <= k <= MAX )
*/

#include <stdio.h>
#include <math.h>

#define MAX 50000

float sum, dx;
Int k;

void purinto()
{
 printf( "K = %5d,\n dx = %.50f,\n sum = %.30f\n", k, dx, sum );
}

void operation()
{
 dx = 1 / (k * sqrt(k));
 sum += dx;

 if( k > 41270 )
 {
  purinto();
 }
}

void init( char* msg )
{
 sum = 0;

 puts( msg );
}

int main( void )
{
 float before;

 init( "small --> big" );
 before = 1; /* dummy input */
 for( k = 1; k <= MAX, before != sum; k++ )
 {
  before = sum;
  operation();
 }

 return 0;
}

15 :13:01/10/09 21:39
数値解析の情報落ちの問題なんですけど、
>>14
の実行結果が納得できない・・・。

8桁目まで足してくれない(?)

16 :名無しさん@1周年:01/10/09 22:12
単精度だからじゃないのか

17 :これのおかげで3日悩みました。:01/10/10 13:31
//VC++6.0
#include "stdafx.h"

void main(int argc, char* argv[])
{
double d;
d = 1.05-1.00-0.05;
printf("1.05-1.00-0.05 = %lf ",d);
if ( d != 0.0 ){
printf("って0じゃねぇぞ、ゴラァ`д´\n");
}
}

18 :BCBでやってみよう。:01/10/10 13:54
>>17
//BC++B5 でやってみました。
//---------------------------------------------------------------------------
#include <stdio.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
void main(int argc, char* argv[])
{
double d;
d = 1.05-1.00-0.05;
printf("1.05-1.00-0.05 = %lf ",d);
if ( d != 0.0 ){
printf("って0じゃねぇぞ、ゴラァ`д´\n");
}
}
//---------------------------------------------------------------------------

1.05-1.00-0.05 = 0.000000 って0じゃねぇぞ、ゴラァ`д´
Press any key!

なるほどね。%gならOK(OKじゃないけど)

19 :done under gcc:01/10/10 16:40
#include <stdio.h>

main(int argc, char* argv[])
{
float a[]={0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0};
double giko; int i;
for(i=0;i<10;i++){
giko=(double)a[i];
printf(" %.20lf \n",giko);
}
}

20 :名無しさん@1周年:01/10/11 01:21
>13
単精度の意味わかってる?

21 :perlでやってみよう。:01/10/11 10:28
>>17
#!/usr/bin/perl
# seido.pl
#

$d = 1.05-1.00-0.05;
printf ("1.05-1.00-0.05 = %f ",$d);
if ( $d != 0.0 ){
print ("って0じゃねぇぞ、ゴラァ`д´\n");
}
#--------------------------------------------------------

$ perl -v
This is perl, v5.6.1 built for cygwin

$ perl seido.pl
1.05-1.00-0.05 = 0.000000 って0じゃねぇぞ、ゴラァ`д´

22 :名無しさん@1周年:01/10/11 16:31
>>20
わかってません。

23 :111:01/10/11 17:25
http://210.236.188.140:8080/

24 :gccでやってみよう。:01/10/12 10:23
>>17
$ cat seido.c
#include <stdio.h>

main()
{
double d;
d = 1.05-1.00-0.05;
printf("1.05-1.00-0.05 = %lf(%E) ",d,d);
if ( d != 0.0 ){
printf("tte zero ja naizo golar `o`\n");
}
}

$ gcc seido.c -o seido.exe

$ ./seido.exe
1.05-1.00-0.05 = 0.000000(4.163336E-17) tte zero ja naizo golar `o`

25 :名無しさん@1周年:01/10/13 00:05
1.0 2.0 4.0 …
または
0.5 0.25 0.125 …
の組み合わせなら0になるかな?

22=13だとしたら。
まず教科書読んだほうがいいよ(w
1.1(有効桁数2桁)に0.010(有効桁数2桁)を足しました。答えは?

26 :名無しさん@1周年:01/10/13 12:32
1.1

float wa 6桁?

27 :名無しさん@1周年:01/10/13 19:17
コンパイラの最適化にもよるよね

28 :名無しさん@1周年:01/10/14 19:33
0.1 を2進数で表したら循環小数になるよねー。
1.05もそうだよね

29 :    :01/12/24 05:14
近似誤差:例えば微分を差分で置き換えるなどの近似法に由来する誤差
打ち切り誤差:本当は長いあるいは無限に続く展開や近似項を有限で
       止めて(打ち切って)近似することによる誤差。
       例えばTaylor展開の最初のn項で止めるなどがこの例になる。
       漸近展開などの場合も該当するかな。
入力誤差:入力されるデーター自身が固有に含んでいる誤差。
     観測誤差のほか、入力の精度が有限であることからも生じる。
。。。

30 :かおなし:01/12/26 18:04
ガウスエルミートの公式について教えてください。

31 :名無しさん@1周年:02/01/09 07:16
数値分散も近似誤差の一種か。

32 :名無しさん@1周年:02/09/23 21:04
保守


33 :名無しさん@1周年:03/01/02 17:09
保守

34 :山崎渉:03/01/11 05:21
(^^)

35 :山崎渉:03/03/13 13:21
(^^)

36 :名無しさん@3周年:03/03/22 14:20
現在、流体の数値計算をしている大学生です。
有限差分法を用いて、MAC法により流速・圧力を計算しています。
しかし、MAC法を用いていると、その数値計算誤差であるDIV(発散)が大きくなってしまい、
(10~0のオーダー)計算結果にいまいち信用が置けません。
複雑な流体計算をする場合はMAC法はあまり適さないのでしょうか?

ちなみに計算対象は流体中に置かれた物体周りの流れ場の解析です。(非定常)
宜しくお願いします。

37 :名無しさん@3周年:03/03/23 07:12
MAC,SMAC,HSMAC,いずれもすばらしいアルゴリズムです.
計算が発散してしまうと言うことは,Dtが大きくなっていると考えるのが
一般的でしょう.


38 :ネットdeDVD:03/03/23 11:14
↓↓ アダルトDVDが今ならなんと!一枚900円! ↓↓
    http://www.net-de-dvd.com/
↓↓ 特売品は、なんと一枚600円!! ↓↓
    http://www.net-de-dvd.com/
↓↓ 数に限りあり!早いもの勝ち。急げ ↓ ↓
    http://www.net-de-dvd.com/

39 :名無しさん@3周年:03/03/23 11:17
最近人生がおもしろくない。
そう思いのあなた!
http://www5e.biglobe.ne.jp/~rgxt5nl/index.htmlのページをお試しください!
100種類のタダで遊べるゲームに、
おもしろいパクリ物を集めたコーナーや、
管理人がすぐに素材にしてくれる素材掲示板
ほかにも、2ちゃん掲示板もありますよ!
自作フラッシュもあります。
とにかくいろんなコンテンツが豊富です!
常連になってくれる人大募集!


40 :名無しさん@3周年:03/03/24 23:44
神降臨。IDが神。 キタ━━━━(゚∀゚)━━━━!!!!!!

http://human.2ch.net/test/read.cgi/wom/1047988677/l58

162 :名無しさん :03/03/24 07:12 ID:I/am/god
>>159
なんか悲しいね。
独特のチープさと独特のノリがなんとも言えず好き。
ちなみに発掘した根本なんかには感謝してる。

163 :名無しさん :03/03/24 07:13 ID:ARu0ZBDd
>>162 さりげなくIDが神だな

164 :名無しさん :03/03/24 07:13 ID:I/am/god
本当だ・・・気が付かなかった。


41 :名無しさん@3周年:03/03/25 13:20



神  の  ホ  ー  ム  ペ  ー  ジ


        http://mypage.naver.co.jp/2ko657ih/



42 :名無しさん@3周年:03/03/28 16:43
>>37
「発散」は誤差による発散じゃなくて、速度の
ダイバージェンスの意味だろ

>>36
MACアルゴリズムに出てくる圧力のポアソン
方程式はどうやって解いてるの?
ちゃんと残差が小さくなるまで収束計算させてる?

43 :山崎渉:03/04/17 08:55
(^^)

44 :山崎渉:03/04/20 04:13
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

45 :山崎渉:03/05/21 22:21
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―

46 :山崎 渉:03/07/15 12:57

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

47 :山崎 渉:03/08/02 02:26
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

48 :ぼるじょあ ◆yBEncckFOU :03/08/02 03:01
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ

49 :山崎 渉:03/08/15 18:44
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

50 :名無しさん@3周年:04/08/29 01:59
何だ?この板
記念に足跡を残しておこう

51 :名無しさん@3周年:04/08/29 22:51
有効桁12と言ったら、11桁までは真値に一致しているのが当然で、
ずれて良いのは最後の一桁だけ。

HPのは単に表示してるだけであってなんら精度に対する保証がない。
詐欺商品だろこれ。
Sin(π-0.01)
Mathematicaによる正確な値40桁
0.009999833334166664682542438269099729038964
TI Voyage200(TI-89,TI-92etc)
0.0099998333341667
HP-49G
0.00999983333396

TI圧勝。TI完璧。
HPは総じて手抜き商品ですな。
いつどこでどうウソ付かれるか判ったもんじゃない。怖くて使えない。

ちなみに、Mathematicaで
ArcSin[0.009999833334166664682542438269099729038964]
=0.01000000000000000000000000000000000000000
なのでこの値は完璧ね。

52 :名無しさん@3周年:04/09/13 18:58:07
コンパイラが違うだけで
同じプログラムで同じ数値が入ってるのに
IMSLのサブルーチンから全く違う値がかえってくるのはなぜ!?

53 :LV仮面:04/09/15 23:46:45
>22
以下、代表的な数値

整数
整数は、正または負の自然数です。

バイト(I8)バイト整数には8ビットの記憶容量があります。
ワード(I16)ワード整数には16ビットの記憶容量があります。
倍長(I32)倍長整数には32ビットの記憶容量があります。通常は、32ビット整数を使用します。

符号なし整数
符号なし整数は負でない整数のみを表し、符号付き整数よりも広い範囲の正の数を持ちます。これは、どちらの表記法でもビット数は同じであるためです。

バイト(U8) 符号なしバイト整数には8ビットの記憶容量があります。
ワード(U16) 符号なしワード整数には16ビットの記憶容量があります。
倍長(U32) 符号なし倍長整数には32ビットの記憶容量があります。


浮動小数点数

単精度(SGL)?倍精度浮動小数点数は32ビットIEEE倍精度形式です。メモリ節約が重要となる場合に単精度浮動小数点数を使用すると、数値の範囲のオーバーフローを防ぐことができます。
倍精度(DBL)?倍精度浮動小数点数は64ビットIEEE倍精度形式です。
拡張精度(EXT)?拡張精度の数値をディスクに保存する場合は、プラットフォームに依存しない128ビット形式で保存されます。これは、Sunのインメモリフォーマットと同じです。メモリでは、サイズと精度はプラットフォームによって異なります。




54 :ぼるじょあ ◆yBEncckFOU :05/01/13 08:20:17
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ

55 :山.崎 渉:05/02/22 21:05:42
...これからも僕を応援して下さいね(^^)。   
  
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
         
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。                         
  =〔~∪ ̄ ̄〕                                            
  = ◎――◎                      山崎渉                       
                                
 __∧_∧_                                                 
 |(  ^^ )| <寝るぽ(^^)      
 |\⌒⌒⌒\                                
 \ |⌒⌒⌒~|         山崎渉             
   ~ ̄ ̄ ̄ ̄                            
                            
   ∧_∧                                       
  (  ^^ )< ぬるぽ(^^)      
                                                       
    (⌒V⌒)                    
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。   
  ⊂|    |つ                                
   (_)(_)                      山崎パン 
                                         
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕                          
  = ◎――――――◎                      山崎渉&ぼるじょあ

56 :名無しさん@3周年:05/02/24 16:29:23
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●不合格●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
これを見た人は確実に【不合格】になります。どこかに3回コピペすれば回避できます。
これは本当です。やらないと一年無駄になります.

(体験者の話)
私も最初は嘘だと思ったんですが、一応コピペ3回しました。それでセンターで
私大に合格出来ました。 けどコピペしなかった友達がA判定だったのに、
落ちたんです。(慶應義塾大合格h.sさん)

俺はもうE判定で記念受験のつもりだったんだけど、コピペ10回くらいした途端に
過去問が スラスラ解けるようになって、
なんと早稲田に受かりました。(早稲田大3学部合格r.kくん)

ぼくなんて底辺高校で完全に人生諦めていました。Fランクにも入れないって
言われていたんです。ところが色んなところにコピペした翌日、合格通知が
届いたんです。(法政大合格m.tくん)

57 :名無しさん@3周年:05/02/24 19:34:51
http://www.geocities.com/tokyufubai/

58 :名無しさん@3周年:2005/07/07(木) 15:24:19
ウホッ 長寿スレ!

59 : :2005/07/07(木) 20:31:04
長寿スレって事か…

馬鹿には見えないスレットじゃないのね、、

60 :名無しさん@3周年:2005/07/30(土) 22:35:39
あと桁落ちってのもあるね。
1000000000 + 0.000000001 = 1000000000
で、数値計算で初期条件が全く同じならば、積極的でも消極的にでも乱数を導入しなければ
何回やっても同じ結果になるんだっけ?

19 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)