24小时热门版块排行榜    

CyRhmU.jpeg
查看: 562  |  回复: 4

依旧是则徐

铜虫 (小有名气)

[求助] 公共参量设定(子程序里的i,j 怎样设置才能使用上面主程序传入的i,j 值呢)已有1人参与

各位,我这样写的程序,但是子程序里的i,j 怎样设置才能使用上面主程序传入的i,j 值呢。
!求解Y''(T)=-(i+j*cos(2*T))*Y
program main
   use IMSL
   implicit none
   integer, parameter :: MXPARM = 50
   integer, parameter :: N = 2
   integer IDO, ISTEP, NOUT
   real PARAM(MXPARM), T, TEND, Y(N)
   real, parameter :: TOL = 1E-8
   external FCN
   real :: i,j

  do i=0,1,0.001
      do j=0,1.5,0.1
           write(*,"(I2,I2)" i,j

       PARAM = 0
        WRITE (*,"(' Time', 9X,'Y')"
        Y(1) = 0 ! Initial condition
        Y(2) = 2.0
        T = 0.0    ! Y(T)=4.0中的时间T值
        IDO = 1
          do ISTEP=0,100,10
            TEND = ISTEP
                call IVPRK (IDO, N, FCN, T, TEND, TOL, PARAM, Y)
            write (*,'(F5.1,F12.4)') T, Y
          end do

       call IVPRK (3, N, FCN, T, TEND, TOL, PARAM, Y)
          end do
   end do
     
  stop
   end program
! 计算微分方程式
! YPRIME=Y'=f(t,y)
subroutine FCN (N, T, Y, YPRIME)
   implicit none
   integer N
   real T, Y(N), YPRIME(N)
   real i,j
  !Y''(T)=-(i+j*cos(2*T))*Y
   YPRIME(2) =-(i+j*cos(2*T))*Y(1)
   return
end subroutine
回复此楼

» 猜你喜欢

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

徐谊

木虫 (著名写手)

【答案】应助回帖


感谢参与,应助指数 +1
ben_ladeng: 金币+1, 谢谢指教 2014-12-17 10:57:33
i j定义为全局变量就行了啊

[ 发自手机版 http://muchong.com/3g ]
2楼2014-12-14 22:17:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

依旧是则徐

铜虫 (小有名气)

引用回帖:
2楼: Originally posted by 徐谊 at 2014-12-14 22:17:37
i j定义为全局变量就行了啊

就是需要设成全局变量 我在主程序和子程序的real i,j 后面都加上common i,j
对吗。请指教!
3楼2014-12-15 09:31:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

Fortran 中可以把 subroutine 当一个参数传给另外一个 subroutine 吗?实在想不起来有这样的写法了,只记得 function 可以作为参数……
4楼2014-12-21 03:55:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

另外,i, j 这类的变量名,一般还是用来表示 integer 变量吧,否则如果不开 implicit none 的话,容易出错……
5楼2014-12-21 03:57:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 依旧是则徐 的主题更新
信息提示
请填处理意见