Fortran Coder

查看: 9729|回复: 3
打印 上一主题 下一主题

[数值问题] 有没有人帮忙解决一下舍入误差的问题?exp(1)的泰了展开

[复制链接]

2

帖子

1

主题

0

精华

新人

F 币
8 元
贡献
7 点
跳转到指定楼层
楼主
发表于 2019-9-16 19:27:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
6F 币
答案应该是从0-n积分与n-0积分结果是不一样的,可是我的程序里这两种方法是一样的


program main
      implicit none
      real(kind=8)::epsilion,i,j,k,a,n,y1,y2 ,z
      epsilion=1.0D-6
      y1=1.0d0
      y2=0.0d0
      do i=1.0d0,1.0d5,1.0d0
         a=1.0d0
         do n=1.0d0,i,1.0d0
            a=a*(1.0d0/i)
         end do
         if(a>epsilion) then
            continue
         else
            exit
         end if
      end do
      write(*,*)"n=",n
      do j=1.0d0,n,1.0d0
         a=1.0d0
         do k=1.0d0,j,1.0d0
            a=a*(1.0d0/k)
         end do
         y1=a+y1
      end do
      write(*,*)"from 0 to n make sum y1=",y1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      do j=n,1.0d0,-1.0d0
         a=1.0d0
         do k=1.0d0,j,1.0d0
            a=a*(1.0d0/k)
         end do
         y2=a+y2
      end do
      y2=y2+1.0D0
      write(*,*)"from n to 0 make sum y2=",y2
      z=exp(1.0d0)
      write(*,*)"exp(1)=",z
      pause
      end

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

101

帖子

0

主题

0

精华

大师

F 币
670 元
贡献
299 点

规矩勋章元老勋章新人勋章

沙发
发表于 2019-9-17 12:16:50 | 只看该作者
为啥不一样?
天之道,损有余而补不足
回复

使用道具 举报

2

帖子

1

主题

0

精华

新人

F 币
8 元
贡献
7 点
板凳
 楼主| 发表于 2019-9-17 20:10:15 | 只看该作者

因为存在舍入误差
回复

使用道具 举报

101

帖子

0

主题

0

精华

大师

F 币
670 元
贡献
299 点

规矩勋章元老勋章新人勋章

地板
发表于 2019-9-17 20:46:44 | 只看该作者
还好吧,可能没体现出来。
误差问题挺复杂的,不是所有情况都会体现出来。

能得到一致的结果,是个好事。乐吧您就。
天之道,损有余而补不足
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-28 08:37

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表