主题:Fortran精度问题
用以下程序计算tent map时间序列,结果大家可以看到迭代十几步之后精度的误差就这么大,完全偏离预期结果,不知道要怎么办,求解!!!!
program tent
implicit none
parameter N=1000
integer :: i
double precision :: x(N)
open(10,file='data.txt')
x(1)=0.2_8
do i=2,N
x(i)=1.0-2.0*abs(x(i-1)-0.5)
end do
do i=1,N
write(10,*)i,x(i)
enddo
end
结果:
1 0.200000000000000
2 0.400000000000000
3 0.800000000000000
4 0.400000000000000
5 0.800000000000000
6 0.400000000000000
7 0.800000000000001
8 0.399999999999999
9 0.799999999999997
10 0.400000000000006
11 0.800000000000011
12 0.399999999999977
13 0.799999999999955
14 0.400000000000091
15 0.800000000000182
PS:编译环境用的是CVF6.6
program tent
implicit none
parameter N=1000
integer :: i
double precision :: x(N)
open(10,file='data.txt')
x(1)=0.2_8
do i=2,N
x(i)=1.0-2.0*abs(x(i-1)-0.5)
end do
do i=1,N
write(10,*)i,x(i)
enddo
end
结果:
1 0.200000000000000
2 0.400000000000000
3 0.800000000000000
4 0.400000000000000
5 0.800000000000000
6 0.400000000000000
7 0.800000000000001
8 0.399999999999999
9 0.799999999999997
10 0.400000000000006
11 0.800000000000011
12 0.399999999999977
13 0.799999999999955
14 0.400000000000091
15 0.800000000000182
PS:编译环境用的是CVF6.6