24小时热门版块排行榜    

查看: 831  |  回复: 3
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

caoweiyue

新虫 (小有名气)

[求助] 刚开始学Fortran 帮忙看一下这个程序 为什么算不出结果

下面的程序算的是全选主元的高斯消去法, 我是照徐士良的算法集编的,但是结果都是0
program main
implicit none
integer::i,L
integer,parameter::n=4
real::A(n,n),b(n),x(n)
data A / 0.2368,0.1968,0.1582,1.1161,0.2471,0.2071,1.1675,0.1254,&
         &0.2568,1.2168,0.1768,0.1397,1.2671,0.2271,0.1871,0.1490 /
data b / 1.8471,1.7471,1.6471,1.5471 /
call agaus(A,b,n,L)
if(L==0) then
  write(*,*) "fail"
else
  do i=1,n
    write(*,"('x',i1,'=',f6.4)" i,x(i)
  end do
end if
stop
end program

subroutine agaus(A,b,n,L)
implicit none
integer:: i,j,k,n,is,js,L
real:: D, T
real:: A(n,n),b(n),x(n)

L=1
do k=1,n-1
  D=0.0
!选出了最大的,并保存其位置
   do i=k,n
     do j=k,n
           if( abs(A(i,j))>D ) then
           D=A(i,j)
                   is=i
                    js=j
           end if  
     end do
   end do
  if(D+1.0==1.0) then
    L=0
    return
  end if
!列交换
  if(js/=k) then
    do i=1,n
          T=A(i,k)
          A(i,k)=A(i,js)
      A(i,js)=T
    end do
  end if
!行交换
  if(is/=k) then
    do j=k,n
          T=A(k,j)
          A(k,j)=A(is,j)
          A(is,j)=A(k,j)
        end do
        T=b(k)
        b(k)=b(is)
        b(is)=b(k)
  end if
!化成三角矩阵
  do i=k+1,n
    do j=k,n
          A(i,j)=A(i,j)-A(i,k)/A(k,k)*A(k,j)
        end do
        b(i)=b(i)-A(i,k)/A(k,k)*b(k)
  end do
end do
if(A(n,n)+1.0==1.0) then
  L=0
  return
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)/A(i,i)
  end do
  return
end subroutine agaus
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jwwang_lq

铁虫 (初入文坛)

【答案】应助回帖

感谢参与,应助指数 +1
write语句里应该输出b(i),而不是x(i)
老实人
3楼2012-05-17 08:51:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 4 个回答

Jasonluo

至尊木虫 (知名作家)

中央书籍处书记

【答案】应助回帖

感谢参与,应助指数 +1
楼主中间那个害羞的表情是啥意思啊?呵呵
朝为田舍郎,暮登天子堂。将相本无种,学子当自强!
2楼2012-05-16 20:59:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

daizhijuan

新虫 (初入文坛)

【答案】应助回帖

write(*,"('x',i1,'=',f6.4)" i,x(i)
少了右边的括号
real:: A(n,n),b(n),x(n)
子程序中的这句之前最好也给n一个值:比如 parameter(n=4)
4楼2012-12-13 16:52:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 求调剂,一志愿:南京航空航天大学大学 ,080500材料科学与工程学硕,总分289分 +5 @taotao 2026-03-19 5/250 2026-03-24 21:07 by greychen00
[考研] 材料专硕找调剂 +5 哈哈哈吼吼吼哈 2026-03-23 5/250 2026-03-24 19:07 by 了了了了。。
[考研] 求调剂 +6 研研,接电话 2026-03-24 7/350 2026-03-24 17:01 by barlinike
[考研] 材料292调剂 +8 橘颂思美人 2026-03-23 8/400 2026-03-24 16:33 by laoshidan
[考研] 材料专硕331求调剂 +4 鲜当牛 2026-03-24 4/200 2026-03-24 15:58 by JourneyLucky
[考研] 求调剂 +7 十三加油 2026-03-21 7/350 2026-03-23 23:48 by 热情沙漠
[考研] 工科0856求调剂 +5 沐析汀汀 2026-03-21 5/250 2026-03-23 17:56 by 海瑟薇-
[考研] 333求调剂 +6 87639 2026-03-21 10/500 2026-03-23 10:41 by Iveryant
[考研] 一志愿中南化学(0703)总分337求调剂 +9 niko- 2026-03-19 10/500 2026-03-22 16:08 by ColorlessPI
[考研] 318求调剂 +4 plum李子 2026-03-21 7/350 2026-03-22 14:17 by ColorlessPI
[考研] 285求调剂 +6 ytter 2026-03-22 6/300 2026-03-22 12:09 by 星空星月
[考研] 考研调剂 +3 呼呼?~+123456 2026-03-21 3/150 2026-03-21 20:04 by 无际的草原
[考研] 材料与化工(0856)304求B区调剂 +3 邱gl 2026-03-20 7/350 2026-03-21 19:05 by 15709483992
[考研] 311求调剂 +3 勇敢的小吴 2026-03-20 3/150 2026-03-21 17:40 by ColorlessPI
[考研] 材料 271求调剂 +5 展信悦_ 2026-03-21 5/250 2026-03-21 17:29 by 学员8dgXkO
[考研] 一志愿重庆大学085700资源与环境总分308求调剂 +7 墨墨漠 2026-03-20 7/350 2026-03-21 16:36 by barlinike
[考研] 22 350 本科985求调剂,求老登收留 +3 李轶男003 2026-03-20 3/150 2026-03-21 13:28 by 搏击518
[考研] 321求调剂 +9 何润采123 2026-03-18 11/550 2026-03-20 23:19 by JourneyLucky
[考研] 353求调剂 +3 拉钩不许变 2026-03-20 3/150 2026-03-20 19:56 by JourneyLucky
[考研] 320求调剂0856 +3 不想起名字112 2026-03-19 3/150 2026-03-19 22:53 by 学员8dgXkO
信息提示
请填处理意见