2010-06-13 4 views
0

아래 프로그램을 사용하고 있지만 계속 오류가 발생합니다. 내 프로그램에 어떤 문제가 있습니까?gfortran을 사용하여 방정식을 풀려고하지만 오류가 계속 발생합니다.

real x 
    complex y 
    real m1,H0,Ms,P1,P2,P3,w0,wm,wh 
    complex w1,w2,o1,o2 
    integer i,n 
    real pi 
    n=4000000000 
    pi=4*atan(1.0) 
    m1=4*pi*1e-7 
    H0=39.79e3 
    Ms=1400e3 
    P1=0.7*0.12 
    P2=0.3*0.12 
    P3=P1-P2 
    w0=m1*(1.76e11)*H0 
    wm=m1*(1.76e11)*Ms 
    wh=w0-P3*wm 
    im=cmplx(0,1) 
    w1=wm/2+wh-im*0.06*2*pi*x 
    w2=wm/2-wh-im*0.06*2*pi*x 
    o1=x**2-x*(2*wh-(P3*wm)/2)-w1*w2+(wm/2)*(P1*w2+P2*w1) 
    o2=x**2+x*(2*wh-(P3*wm)/2)-w1*w2+(wm/2)*(P1*w2+P2*w1) 

    do i=0,n 
    x=i 
    y=1+wm*(P1*w1*((w2)**2-x**2))/(o1*o2) 
&  +wm*(P2*w2*((w1)**2-x**2))/(o1*o2) 
&  -wm*((wm/2)*((P1*w2+P2*w1)**2)))/(o1*o2) 
&  +wm*((wm/2)*((P3*x)**2))/(o1*o2) 
    write(10,*)x,y 
    enddo 
    return 
    end 
+0

무엇이 오류입니까? 사람들이 프로그램을 읽고 컴파일하도록하지 마십시오. 배경 좀 어때? 방정식이 뭐야? 솔루션 방법은 무엇입니까? 이것을 읽어주십시오. http://www.catb.org/~esr/faqs/smart-questions.html – duffymo

+0

먼저, 주 프로그램에서 return 문을 사용할 수 없습니다. – Rook

답변

4

이 줄 (여러 줄 문에서 세 번째) :

-wm*((wm/2)*((P1*w2+P2*w1)**2)))/(o1*o2) 
    || | ||   | ||| |  | 
    |+----+ |+-----------+ ||| +-----+ 
    |  +----------------+|| 
    +-------------------------+| 
??? <--------------------------+ 

는 {나의 멋진 그림 실력 :-) 두려움에 떨게} 너무 많은 닫는 괄호 있습니다. 내가 그 소스에서 가져온 문제의 전체 목록


-wm*((wm/2)*((P1*w2+P2*w1)**2))/(o1*o2) 
했다 : 그것은해야

source.f90:7.18: n=4000000000 
          1 
       Error: Integer too big for its kind at (1). This check can 
       be disabled with the option -fno-range-check. 
source.f90:26.9: y=1+wm*(P1*w1*((w2)**2-x**2))/(o1*o2) & 
       1 
       Error: Unclassifiable statement at (1) 

그 중 두 번째는 당신이 아마 데있어 사람이다 (그리고 하나는 위의 솔루션으로 해결할 수 있습니다). 첫 번째 문제는 문제가 될 수 있지만 환경 때문이라고 생각됩니다.

+1

언밸런스 괄호를 찾아내는 데 좋은 사람은 모두 리스프 프로그래머 여야합니다. – NealB

관련 문제