回 帖 发 新 帖 刷新版面

主题:没办法,又来求助了:语法没问题,为什么cmd界面上什么都没显示?

这是代码,用的编译器是ivf+vs2008
就是想编一个雅阁比矩阵方程迭代求解
能生成解决方案,但是cmd界面上什么都没有啊。。。
program number4
 implicit none
 integer,parameter ::n=4
 integer i,j,k
 real,parameter ::e=0.00001
 real ::x(n),y(n),b(n),d(n),c(n)
 real ::a(n,n)
 real s,l,dmax,dmaxh
 data b/1.38,-0.34,0.67,1.52/
 data a/2.52,0.39,0.55,0.23,0.95,1.69,-1.25,-1.15,1.25,-0.45,1.96,-0.45,-0.85,0.49,-0.98,2.31/
 
 do i=1,n
  d(i)=0.
  x(i)=0.
 end do
 dmax=1.
 k=0
 do while(dmax>=e)
  do i=1,n
   s=0.
   y(i)=b(i)
   do j=1,n
    s=s+a(i,j)*x(j)
   end do
   l=s-a(i,i)*x(i)
   y(i)=(y(i)-l)/a(i,i)
   c(i)=y(i)-x(i)
   if (abs(c(i))>d(i))then
    d(i)=abs(c(i))
   end if
  end do !得到相邻迭代之间的差值和上次迭代的y
  dmaxh=d(1)
  do i=2,n
   if(d(i)>=dmaxh)then
    dmaxh=d(i)
   end if
  end do  !得到迭代差值中的最大值dmax
  dmax=dmaxh
  do i=1,n
   x(i)=y(i)
  end do
  k=k+1
 end do
 print*,k
end program

回复列表 (共7个回复)

沙发

你永远退不出循环,怎能有输出?

板凳


额。。。怎么会退不出循环呢,当dmax>e的时候不是就退出了吗

3 楼

[quote]
额。。。怎么会退不出循环呢,当dmax>e的时候不是就退出了吗[/quote]

看看while的用法!满足条件一直循环!!!

4 楼


是啊,满足条件就会一直循环,直到不满足括号里的条件就停止了啊

5 楼


难道说是初值赋得不对?

6 楼


看来只有把while的条件改成迭代步数了

7 楼

[quote]
是啊,满足条件就会一直循环,直到不满足括号里的条件就停止了啊[/quote]

问题是永远没有不满足条件的时候......

我来回复

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