24小时热门版块排行榜    

CyRhmU.jpeg
查看: 696  |  回复: 11
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

icecream8508

金虫 (著名写手)

[交流] 【求助】新人请教fortran编程问题![求助完成]

刚接触Fortran不久。因为自己求解的东西需要迭代,而自己对迭代的认识就是附初值,然后更新每次的值,直到收敛。大致思路也该如此,但是在程序实现的时候,总是不对的。
因此,今天就想从最简单的迭代开始算起。想先把最基本的一个迭代的例子走通,但是结果仍然不对。
也问了几个人,但是大家对于程序的编写都有自己习惯的语言,觉得问完之后,更茫然了。
在检查程序的时候,不知道错在哪里了?
不知,大家在审查程序时有什么好方法吗?

[ Last edited by wangmonk on 2009-6-7 at 20:44 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

icecream8508

金虫 (著名写手)

楼上的,多谢回复啊。就这个迭代。整的我头疼。
按照你的意思,就是采用二维数组来存储求解的值。
我原本的意思是也是采用二维数组来存放x值,一个代表着方程的个数,一个是用来表征迭代的次数。不过,因为迭代的次数不知道,觉得这种方法也过于繁琐了。

再者,上面的迭代实际是gauss-seidel迭代。
我写错了。

另外,我也知道迭代,就是每次迭代把上次迭代的值引入计算。
可是在实际的程序编写中,确是实现错误的。
7楼2009-06-04 09:25:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 12 个回答

icecream8508

金虫 (著名写手)

我今天做的简单例子的编程附着如下:
!******* 练习迭代算法*******

!******** 所需要求解的方程******
!  x(1)=0.2*x(2)+0.1*x(3)+0.3
!   x(2)=0.2*x(1)+0.1*x(3)+1.5
!   x(3)=0.2*x(1)+0.1*x(2)+2
  
!******* 1.jACOBI 迭代*******
program main

real B(3)
real A(3,3),x(3),s(30)
integer N,k
integer m
real(kind=8) :: eps
real(kind=8) :: xo
integer,parameter:: NM=1000

eps=1.0e-6
!***********系数矩阵*************
B(1)=0.3
B(2)=1.5
B(3)=2

A(1,2)=0.2
A(1,3)=0.1
A(2,1)=0.2
A(2,3)=0.1
A(3,1)=0.2
A(3,2)=0.1

!***************迭代公式************
! do k=1,NM,1
!Do i=1,3
!   x(i)=0.0
!end do

20 Do k=1,NM,1

Do i=1,3
  s(i)=0.0  
  Xo=x(i)
  x(i)=0.0
   Do j=1,3
      If(i.NE.j) then
!       S(i)=S(i)+A(i,j)*Xo
       S(i)=S(i)+A(i,j)*X(j)
      End if
   End do
x(i)=B(i)-s(i)

If(abs(xo-x(i)).gt.eps) then
Go to 20
else
  exit
end if

end do
end do

!write(*,*) (x(i),i=1,3)
do j=1,3
  write(*,*) x(j)
end do

end program main
2楼2009-06-03 11:50:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maomao1210

金虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
你是想知道问题出现在哪里,还是想知道怎么找错误,
这个不是在地图上找某个城市那么公式化和简单化,有一般的调试流程,但有很大的经验成份,还有对该程序的熟悉程度以及算法,程序理论依据的熟悉程度。不是你想象的那么简单。
3楼2009-06-03 21:38:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maomao1210

金虫 (正式写手)

具体的错误以及问题,可以帮你解决,某些问题,不可言传。
4楼2009-06-03 21:39:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复(可上传附件)
信息提示
请填处理意见