作者sjgau (sjgau)
看板Programming
标题Re: [问题] 关於fotran数值运算的误差问题
时间Mon Nov 6 11:48:00 2006
#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 讨论吧
[email protected]
这种简单的问题讨论,
是会被 公干的
※ 引述《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