24小时热门版块排行榜    

Znn3bq.jpeg
查看: 391  |  回复: 2

zouji1983

金虫 (正式写手)

[求助] 小程序求助!!!

紧急求助啊,下面的程序出现log domain error. 请大家帮忙怎么解决啊!急啊!非常感谢!!!

Program main

        integer :: ix,iy
        real(8),dimension(1,1,5,5) :: xp,x
               real(8),dimension(1:2,5,5) :: phi
                xp(1,1,1,1)=0.2
                              x(1,1,1,1)=0.2
                phi(1,1,1)=1
                phi(2,1,1)=0
                do ix=1,5
                   do iy=1,5
                   xp(1,1,ix,iy)=xp(1,1,ix,iy)+0.01
           x(1,ix,iy,1)= x(1,ix,iy,1)+ 0.05
           phi(1,ix,iy)=phi(1,ix,iy)-0.001
                   phi(1,ix,iy)=phi(2,ix,iy)+0.001
                call calculation (xp(1,1,ix,iy),x(1,ix,iy,1),phi(1,ix,iy),phi(2,ix,iy))
                xp(1,2,ix,iy)=(x(1,ix,iy,1)-phi(1,ix,iy)*xp(1,1,ix,iy))/phi(2,ix,iy)            
            end do
                end do            
end program main

subroutine calculation (x,xc,phi1,phi2)
        integer ::  k
        real(8) :: tol,x,x0,xc,f,df,phi1,phi2
        f(x)=1.06366481d10+7.94800172d9+1.72992961d9*log(abs(x))-1.72992961d9*log(abs(1-x))-1.182988286d10*(1-2*x)+2.75714286d9*(6*x-6*x**2-1)+3.083731429d9*(24*x**2-10*x-16*x**3+1)-1d11*(xc-phi1*x)/phi2 + 9.229804981d10
        df(x)=2*1.182988286d10+1.72992961d9/x/(1-x)+2.75714286d9*(6-12*x)+3.083731429d9*(48*x-10-48*x**2)+1d11*phi1/phi2
        tol=1e-6
        x0=0.2d0
        k=0
        10 k=k+1
        x=x0-f(x0)/df(x0)
        if(abs(x-x0).lt.tol)goto 20
            x0= x
        goto 10
        20 write(*,*) x
                        
        end subroutine calculation
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
你这个程序都没有办法编译,何谈运行错误?
主程序倒数第四行中xp(1,2,ix,iy)是不是超出了定义的下标范围?

另外,你的子程序的参数中有 x,这个 x 在主程序中是一个数组,但在子程中它是一个实数,这会不会有问题……
2楼2012-11-28 09:08:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zouji1983

金虫 (正式写手)

引用回帖:
2楼: Originally posted by snoopyzhao at 2012-11-28 09:08:24
你这个程序都没有办法编译,何谈运行错误?
主程序倒数第四行中xp(1,2,ix,iy)是不是超出了定义的下标范围?

另外,你的子程序的参数中有 x,这个 x 在主程序中是一个数组,但在子程中它是一个实数,这会不会有问 ...

谢谢你的回复。我又重新写了一下,但他说我的f 和df size 不符。你可以帮我看看吗?非常感谢!
Program main

        integer :: ix,iy
        real(8),dimension(1,1,5,5) :: xp,x
               real(8),dimension(1:2,5,5) :: phi
        do ix=1,5
           do iy=1,5
           x(1,ix,iy,1)= 0.3
           phi(1,ix,iy)=0.88
               phi(1,ix,iy)=0.12
            
                end do
     end do       
    call calculation (xp(1,1,ix,iy),x(1,ix,iy,1),phi(1,ix,iy),phi(2,ix,iy))
        !xp(1,2,ix,iy)=(x(1,ix,iy,1)-phi(1,ix,iy)*xp(1,1,ix,iy))/phi(2,ix,iy)            
end program main

subroutine calculation (x,xc,phi1,phi2)
        integer ::  k,i,j
        real(8),dimension(1,1,5,5) :: x,xc,x0
        real(8),dimension(1,5,5) :: phi1,phi2
        real(8),dimension(1,1,5,5) :: f,df
        real(8):: tol
                do i=1,5
                  do j=1,5
        f(1,1,i,j)=1.06366481d10+7.94800172d9+1.72992961d9*log(abs(x(1,1,i,j)))-1.72992961d9*log(abs(1-x(1,1,i,j)))&
        -1.182988286d10*(1-2*x(1,1,i,j))+2.75714286d9*(6*x(1,1,i,j)-6*x(1,1,i,j)**2-1)+3.083731429d9*(24*x(1,1,i,j)**2&
        -10*x(1,1,i,j)-16*x(1,1,i,j)**3+1)-1d11*(xc(1,i,j,1)-phi1*x(1,1,i,j))/phi2 + 9.229804981d10
        df(1,1,i,j)=2*1.182988286d10+1.72992961d9/x(1,1,i,j)/(1-x(1,1,i,j))+2.75714286d9*(6-12*x(1,1,i,j))+&
        3.083731429d9*(48*x(1,1,i,j)-10-48*x(1,1,i,j)**2)+1d11*phi1/phi2
        tol=1e-6
        x0(1,1,i,j)=0.2d0
        k=0
        10 k=k+1
        x(1,1,i,j)=x0(1,1,i,j)-f(1,1,i,j)/df(1,1,i,j)
        if(abs(x(1,1,i,j)-x0(1,1,i,j)).lt.tol)goto 20
            x0(1,1,i,j)= x(1,1,i,j)
        goto 10
        20 write(*,*) x(1,1,i,j)
                  end do
                end do
                        
end subroutine calculation
3楼2012-11-28 21:41:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zouji1983 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 河北省自然科学基金 +5 Peterchao 2026-05-18 8/400 2026-05-24 11:58 by 晓晓爱翠翠
[基金申请] 西安交大新媒学院副院长用撤稿论文结题 +3 bjvtcliu 2026-05-24 5/250 2026-05-24 10:16 by kudofaye
[教师之家] 论文撤稿了 +3 bjvtcliu 2026-05-24 5/250 2026-05-24 10:06 by Equinoxhua
[教师之家] 某211大学教师把个人教师官方主页改成:我跑了我跑了我跑了!官宣跑路! +4 zju2000 2026-05-21 5/250 2026-05-24 09:35 by songwz
[考博] 26/27申博自荐 10+4 ZXW0202 2026-05-22 9/450 2026-05-24 08:47 by bjvtcliu
[硕博家园] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 hvkbtfonbv 2026-05-23 3/150 2026-05-24 08:01 by 9ps9vgkqva
[硕博家园] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 pmo95bazuy 2026-05-23 7/350 2026-05-24 06:35 by fpo5ljpv91
[基金申请] 揭秘青基评审内幕:几个A才能顺利中标 +3 国自然国社科中 2026-05-23 4/200 2026-05-23 15:37 by 2000zf36392
[基金申请] 青B发送上会通知了吗 +5 chemBioBro 2026-05-22 7/350 2026-05-23 12:35 by zhuifengzhy
[考博] 博士申请 +3 焦晓明 2026-05-21 3/150 2026-05-23 11:26 by mlc840311
[论文投稿] 投稿求助,期刊 +4 希冀,有书读 2026-05-20 8/400 2026-05-22 10:16 by 希冀,有书读
[文学芳草园] 献血感触 +7 呀呀好傻 2026-05-19 13/650 2026-05-21 20:15 by 呀呀好傻
[基金申请] 面上本子正文33页,违规吗?会被低分嘛? +14 1234567wang 2026-05-17 16/800 2026-05-21 17:58 by 脆脆的饼干
[基金申请] 国自然评分 +4 无名者登山 2026-05-20 5/250 2026-05-21 16:35 by swuq
[基金申请] 提交了我也来说说感想 +9 fummck 2026-05-20 10/500 2026-05-21 14:17 by draco1987
[基金申请] 评审有感 +15 popular289 2026-05-18 26/1300 2026-05-21 10:35 by 西葫芦炒鸡蛋
[有机交流] 反应很差,大量原料没有反应 5+3 Mr.Zot 2026-05-19 8/400 2026-05-20 22:19 by Equinoxhua
[考博] 如果工作了想读博,可以边工作边读全日制嘛? 30+3 铁达火车 2026-05-18 5/250 2026-05-20 09:33 by tfang
[考博] 博士申请 +5 星…… 2026-05-18 6/300 2026-05-18 23:49 by 糊糊涂涂好
[硕博家园] 我在等一个没有答案的答案 +3 Love_MH 2026-05-17 3/150 2026-05-18 02:22 by 竹林孤影
信息提示
请填处理意见