call 문에서 계속 에러가 나오네요..ㅋ
dimension y(2)
write(6,*) '초기 구간 ='
read(5,*) h0
write(6,*) '초기값 x0, y10, y20 ='
read(5,*) x, y10, y20
write(6,*) '최종 x 값 ='
read(5,*) xf
write(6,*) '최대허용 오차 ='
read(5,*) emax
y(1)=y10
y(2)=y20
h=h0
end
call rung(x,y)
end
subroutine rung(x,y)
dimension y(2),yn1(2),yn2(2),yn3(2),yn4(2),yn5(2),err(2),e(2)
real k1(2), k2(2), k3(2), k4(2), k5(2), k6(2)
do 10 i=1,2
k1(i)=h*f(i,x,y)
yn1(i)=y(i)+k1(i)/4.0
10 continue
do 20 i=1,2
k2(i)=h*f(i,x+h/4.0,yn1)
yn2(i)=y(i)+3.0/32.0*k1(i)+9.0/32.0*k2(i)
20 continue
do 30 i=1,2
k3(i)=h*f(i,x+3.0/8.0*h,yn2)
yn3(i)=y(i)+1932.0/2197.0*k1(i)-7200.0/2197.0*k2(i)+7296.0/2197.0*k3(i)
30 continue
do 40 i=1,2
k4(i)=h*f(i,x+12.0/13.0*h,yn3)
yn4(i)=y(i)+439.0/216.0*k1(i)-8.0*k2(i)+3680.0/513.0*k3(i)-845.0/4104.0*k4(i)
40 continue
do 50 i=1,2
k5(i)=h*f(i,x+h,yn4)
yn5(i)=y(i)-8.0/27.0*k1(i)+2.0*k2(i)-3544.0/2565.0*k3(i)+1859.0/4104.0*k4(i)-11.0/40.0*k5(i)
50 continue
do 60 i=1,2
k6(i)=h*f(i,x+h/2.0,yn5)
y(i)=y(i)+16.0/135.0*k1(i)+6656.0/12825.0*k3(i)+28561.0/56430.0*k4(i)-9.0/50.0*k5(i)+2.0/55.0*k6(i)
err(i)=k1(i)/360.0-128.0/4275.0*k3(i)-2197.0/75240.0*k4(i)+k5(i)/50.0+2.0/55.0*k6(i)
if(err(1).lt.0) err(1)=-1.0*err(1)
if(err(2).lt.0) err(2)=-1.0*err(2)
e(i)=err(i)/y(i)*100
if(e(1).gt.emax.or.e(2).gt.emax) then
h=h/2.0
return
endif
60 continue
x=x+h
write(6,200)x,y(1),y(2)
200 format(8x,3(8x,f12.6))
if(x.gt.xf) goto 100
return
100 end
function f(i,x,y)
dimension y(2)
goto(1000,1100), i
1000 f=998.0*y(1)+1998.0*y(2)
return
1100 f=-999.0*y(1)-1999.0*y(2)
return
end
카페 게시글
포트란 Q&A
call 에서 에러가..ㅡㅡ;;
rolsto
추천 0
조회 64
04.08.29 18:02
댓글 1
다음검색
첫댓글 서브루틴에서 변수 x에 대한 선언문이 없군요.