作者sjgau (sjgau)
看板Fortran
标题Re: [问题] 关於误差估计的问题
时间Wed May 19 16:33:07 2010
!dec$if(.false.)
Hello World, x= 3.141593
x, y, (1.0/x)= 1.6778712E+07 1.6778712E+07 5.9599330E-08
ct1, (1.0/(2^23))= 154891 1.1920929E-07
Press any key to continue
!dec$endif
! ---------------------------------------------------------
program VF051916
implicit none
real x, y, z
integer ct1
ct1= 0
x= 4.0*atan(1.0)
print *, 'Hello World, x= ', x
! -------------------------------------------
y= x + 1.0
do while (y .GT. x)
x= x*1.001
y= x + 1.0
ct1= ct1 + 1
end do
print *, 'x, y, (1.0/x)= ', x, y, (1.0/x)
x= 1.0/(2.0**23)
print *, 'ct1, (1.0/(2^23))= ', ct1, x
stop
end program VF051916
※ 引述《sjgau (sjgau)》之铭言:
: 任何的程式设计,
: 浮点数的储存和运算,
: 一定会有误差。
: REAL*4 使用 23个 BITS 来表示
: 浮点数的精确度。
: 所以,相对误差可以到 (1.0/ (2^23))
: REAL*8 使用 52个 BITS 来表示
: 浮点数的精确度。
: 所以,相对误差可以到 (1.0/ (2^52))
: 所以,以下的程式
: REAL X, Y, Z
: X= 1.23
: IF (X .EQ. 1.23) THEN
: WRITE(*, *)'X == 1.23'
: END IF
: STOP
: END
: 绝对不会印出来
: X == 1.23
: ※ 引述《sunhpy (水母片)》之铭言:
: : 最近老师出了一个题目,如下:
: : 利用泰勒级数 cosx=1-x^2/2! +x^4/4! -x^6/6!+...
: : 以近似cosx至8位有效数字所需之项数。求x=2*3.14时之近似值。
: : 因刚开始接触fortran,不知道该怎麽写,请各位大大帮忙。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.140.6.127