回 帖 发 新 帖 刷新版面

主题:求助:为什么ivf下读取数据总是错误?

其实就是编写高斯全主元消去法的一个程序,编译器是最新的ivf和vs2008。最近想学学从外部文件中读取数据用于计算,但是怎么也不行啊:能生成,但是执行的时候总是不成功。实在没招了,请各位高手们帮忙解答啊!!!
我在input.txt中存放着4行5列的数据,用open去读取出来成数组C(4,5),然后赋值给A(4,4)和B(4)用于后续计算。
Program AGAUS0
 Implicit none
 Integer,Parameter ::N=4
 Integer L,I,J,K,IS,m,r,o,p,q
 Real D,T
 Real ::A(N,N)
 Real ::B(N),X(N),JS(N)
 Real ::C(N,N+1)
 Open(10,file='input.txt')
 K=0
 L=1
 Read(10,*) C
 Close(10)
Do I=1,N
 Do J=1,N
  A(I,J)=C(I,J)
 End do
 B(I)=C(I,N+1)
End do
Do K=1,N-1
 D=0.0
 Do I=K,N
  Do J=K,N
   If(Abs(A(I,J)).GT.D)Then
    D=Abs(A(I,J))
    JS(K)=J
    IS=I
   End if
  End do
 End do
 If(D+1.0.EQ.1.0)Then
  L=0
 Else
  If(JS(K).NE.K)Then
   Do m=1,N
    T=A(m,K)
    A(m,K)=A(m,JS(K))
    A(m,JS(K))=T
   End do
  End if
  If(IS.NE.K)Then
   Do p=K,N
    T=A(K,p)
    A(K,p)=A(IS,p)
    A(IS,p)=T
   End do
   T=B(K)
   B(K)=B(IS)
   B(IS)=T
  End if
 End if !换主元完成
 If(L.EQ.0)Then
  Print*,'FAIL'
 End if
 Do q=K+1,N
  A(K,q)=A(K,q)/A(K,K)
 End do
 B(K)=B(K)/A(K,K)
 Do r=K+1,N
  Do o=K+1,N
  A(r,o)=A(r,o)-A(r,K)*A(K,o)
  End do
  B(r)=B(r)-A(r,K)*B(K)
 End do
End do
If(Abs(A(N,N))+1.0.EQ.1.0)Then
 L=0
 Print*,'FAIL'
End if
X(N)=B(N)/A(N,N)
Do I=N-1,1,-1
 T=0.0
 Do J=I+1,N
  T=T+A(I,J)*X(J)
 End do
 X(I)=B(I)-T
End do
JS(N)=N
Do K=N,1,-1
 If(JS(K).NE.K)Then
  T=X(K)
  X(K)=X(JS(K))
  X(JS(K))=T
 End if
End do
Print*,(X(I),I=1,N)
End Program
[size=5]5[/size][color=800000]800000[/color]

回复列表 (共11个回复)

11 楼

[quote]
真的多谢你了!![/quote]

客气啥呀!或许是Clean,Build或者Rebuild就能解决的问题。

我来回复

您尚未登录,请登录后再回复。点此登录或注册