爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6155|回复: 23

[求助] 求【0,2】 定积分 ∫(x2+4X+7)dx ,用梯形法,计算精度为10-3.怎么做

[复制链接]

新浪微博达人勋

发表于 2014-4-30 00:14:15 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 t_imba 于 2014-4-30 01:36 编辑

program ex15
    implicit none
    real::h,f1,f2,s1=0.0,si,s2=0.0
        integer n,i,j
        read*,n
    h=2./n
        f1=7.0
    si=0.0
        
        do i=1,n
    f2=(i*h)**2+4*(I*h)+7
        si=(f1+f2)*h/2.0
    f1=f2
        s1=s1+si
        s2=s1-si
        
        if (abs(s1-s2)<1e-3) exit
        end do
    print *,s1,i,s1-s2

End
不懂如何把求精度的弄进来,请问N必须自己输入么?如果不自己输入怎么做。求指教


密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-4-30 01:11:21 | 显示全部楼层
abs(s1-s2)<1e-3这个就是对精度的判定了,你不需要自己输入n,只要在外层加一个循环,如果精度不够的话就让n+1,然后再次进行累加求和
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-4-30 01:13:53 | 显示全部楼层

能帮改改么?好像直接再套一个,但是N未定义求不出来
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-4-30 01:16:40 | 显示全部楼层
program ex15
    implicit none
    real::h,f1,f2,s1=0.0,si,s2=0.0
        integer n,i,j
        n=10
100 continue
    h=2./n
        f1=7.0
    si=0.0
      
        do i=1,n
    f2=(i*h)**2+4*(I*h)+7
        si=(f1+f2)*h/2.0
    f1=f2
        s1=s1+si
        s2=s1-si
        
        if (abs(s1-s2)<=1e-3) then
        goto 200
        elsefi(abs(s1-s2)>1e-3)then
        n=n+1
        goto 100
        endif
        end do
200 continue
    print *,s1,i,s1-s2

End
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-4-30 01:18:34 | 显示全部楼层
石破天惊 发表于 2014-4-30 01:16
program ex15
    implicit none
    real::h,f1,f2,s1=0.0,si,s2=0.0

额,可以了。我研究研究,谢谢了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-4-30 01:19:06 | 显示全部楼层
诶,不对,不好意思,应该是这样


program ex15
    implicit none
    real::h,f1,f2,s1=0.0,si,s2=0.0
        integer n,i,j
        n=10
100 continue
    h=2./n
        f1=7.0
    si=0.0
      
        do i=1,n
        f2=(i*h)**2+4*(I*h)+7
        si=(f1+f2)*h/2.0
        f1=f2
        s1=s1+si
        s2=s1-si
        enddo
        if (abs(s1-s2)<=1e-3) then
        goto 200
        elsefi(abs(s1-s2)>1e-3)then
        n=n+1
        goto 100
        endif
200 continue
    print *,s1,i,s1-s2

评分

参与人数 1金钱 +5 收起 理由
t_imba + 5 赞一个!

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-4-30 01:22:52 | 显示全部楼层
石破天惊 发表于 2014-4-30 01:19
诶,不对,不好意思,应该是这样

额,好像两个值都不对,应该定积分的 值应该是在24.666667这样,S1的值都太离谱了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-4-30 01:24:52 | 显示全部楼层
石破天惊 发表于 2014-4-30 01:19
诶,不对,不好意思,应该是这样

请问如果不用GOTO语句还有更好的方法么?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-4-30 01:26:50 | 显示全部楼层
f1为什么是7啊,这个不对吧
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-4-30 01:29:52 | 显示全部楼层
石破天惊 发表于 2014-4-30 01:26
f1为什么是7啊,这个不对吧

哦。程序写错了。是x2+4X+7
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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