Re: [問題] 關於fotran數值運算的誤差問題
#include "stdafx.h"
#include <math.h>
int main(int argc, char* argv[])
{
double a, b, c;
printf("\nsizeof(c)= %d bytes\n", sizeof(c));
a=0.100000000001e300;
b=0.100000000000e300;
c= a - b;
printf("\nc= %25.22le\n", c);
return 0;
}
/*
sizeof(c)= 8 bytes
c= 1.0000002832399531000000e+288
Press any key to continue
*/
手邊暫時 沒有 fortran 的 compiler
先使用 對等的 C 幫你看看
你 看看那個 c 的答案 是否為你 所要的,
然後,私下用 e-mail 討論吧
sjgau4311@gmail.com
這種簡單的問題討論,
是會被 公幹的
※ 引述《jas2902 (..)》之銘言:
: 我想要請教板上的高手 關於fortran數值計算上面的誤差問題
: 參考下面這個簡單的程式
: --------------------------------
: program test
: real(kind=8) a, b
: a=0.100000000001*1D300
: b=0.100000000000*1D300
: write(*,*) a-b
: end test
: --------------------------------
: 我發現在螢幕上顯示出來的結果是:
: 0.0000000000000000
: 但實際的結果應該是:
: 0.000000000001*10^300=10^288
: 誤差差了 10^288 !
: 因為類似這樣的計算誤差
: 讓我在計算量子力學裡面穿透機率的問題
: 在某些點發生了機率大於1的狀況(機率一定會小於1)
: 想了很久 我不知道遇到這種狀況要怎麼樣處理
: 不知道板上的高手有沒有什麼好辦法可以解決
: 希望可以幫我個忙 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.228.165.65
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章