美文网首页
Fortran experiment_5 实验报告

Fortran experiment_5 实验报告

作者: tobbby | 来源:发表于2017-05-04 09:29 被阅读0次

    5.1 ex0501.f90

    代码:

    program ex0501
    
    implicit none
    
    real (kind=4) :: a, b, res, h, temp, sum0
    integer ::  n, i
        a = -2.0
        b = 2.0
        sum0 = 0.0
    read(*,*) n
    
    do i=1, n
        h = (b-a)/n
        temp = (a+i*h)**2+sin(a+i*h)
        sum0 = sum0 + temp
    end do
    
    res = 0.5*h*(a**2+sin(a)+b**2+sin(b)+2*sum0)
    write (*,*) 'The answer is',res
    
    end
    

    结果:

    分析:

    运行程序,选择n=10,100,100000等等,结果如图所示。可以看到,当n很小的时候不精确,n增大时结果越来越精确。但是当n继续增大的时候,由于变量里面使用的是单精度浮点数,造成运算过程中误差积累,又使结果变得不精确了。以上是个人的猜想,为了检查是否是精度的问题,把代码中的浮点数由单精度改为了双精度,再次运行程序所得结果如图二所示。这里把real (kind=4) :: a, b, res, h, temp, sum0 改为 real (kind=8) :: a, b, res, h, temp, sum0

    综上所述,该实验成功的算出了积分,并且验证了了不同的精度对实验结果的影响。n太小时实验精度不够,n太大时由于本身使用的单精度浮点数,这样的精度累计起来的误差也要考虑在内。因此,选择一个合适的精度和n的值是很重要的。

    相关文章

      网友评论

          本文标题:Fortran experiment_5 实验报告

          本文链接:https://www.haomeiwen.com/subject/xtjrtxtx.html