Re: [問題] 關於誤差估計的問題
!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
討論串 (同標題文章)
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章