回 帖 发 新 帖 刷新版面

主题:[原创]请各位高手帮看看这个程序什么地方错了

此程序是求线性方程组  ,能运行,就是结果不正确
program ex123
implicit none
integer i,j,k,A(3,3),B(3),x(3)
read(*,*) ((A(i,j),i=1,3),j=1,3)
read(*,*) (B(i),i=1,3)
Do 30,k = 1,2
   Do 20,i = k+1,3
      Do 10,j = k,3
         A(i,j)=A(i,j)-A(k,j)*(A(i,k)/A(k,k))
         B(i)=B(i)-B(k)*(A(i,k)/A(k,k))
      10 continue
   20 continue
30 continue
x(3)=B(3)/A(3,3)
x(2)=(B(2)-A(2,3)*x(3))/A(2,2)
x(1)=(B(1)-A(1,2)*x(2)-A(1,3)*x(3))/A(1,1)
Do 40,i = 1,3
   print*,x(i)
40 continue
end

回复列表 (共11个回复)

沙发

我一眼望去,没看到一个浮点型
却有A(i,k)/A(k,k)等计算式相除……

板凳

嗯,浮点型的不能做 除法。楼主试试把数组定义成integer

3 楼


program ex123
implicit none
integer i,j,k
real A(3,3),B(3),x(3)
read(*,*) ((A(i,j),i=1,3),j=1,3)
read(*,*) (B(i),i=1,3)
Do 30,k = 1,2
   Do 20,i = k+1,3
      Do 10,j = k,3
         A(i,j)=A(i,j)-A(k,j)*(A(i,k)/A(k,k))
         B(i)=B(i)-B(k)*(A(i,k)/A(k,k))
      10 continue
   20 continue
30 continue
x(3)=B(3)/A(3,3)
x(2)=(B(2)-A(2,3)*x(3))/A(2,2)
x(1)=(B(1)-A(1,2)*x(2)-A(1,3)*x(3))/A(1,1)
Do 40,i = 1,3
   print*,x(i)
40 continue
end
结果还是不对啊

4 楼


program ex123
implicit none
integer i,j,k
real A(3,3),B(3),x(3)
read(*,*) ((A(i,j),i=1,3),j=1,3)
read(*,*) (B(i),i=1,3)
Do 30,k = 1,2
   Do 20,i = k+1,3
      Do 10,j = k,3
         A(i,j)=A(i,j)-A(k,j)*(A(i,k)/A(k,k))
         B(i)=B(i)-B(k)*(A(i,k)/A(k,k))
      10 continue
   20 continue
30 continue
x(3)=B(3)/A(3,3)
x(2)=(B(2)-A(2,3)*x(3))/A(2,2)
x(1)=(B(1)-A(1,2)*x(2)-A(1,3)*x(3))/A(1,1)
Do 40,i = 1,3
   print*,x(i)
40 continue
end
结果还是不对啊

5 楼

2楼是不是想说相反的意思?

6 楼

你想要什么结果
你又没说你的测试用例
万一有大数除小数,让人情何以堪

7 楼


A=[1 1 1;2 -3 1;4 -6 3]
B=[2;11;10]
正确解应为 【13 1-12】

8 楼


已将A,B数组定义位实数

9 楼

求解线性方程的算法我也不记得了. 也不知道你用什么算法. 我觉得是不是你代码写错了而已 
例如一个很疑惑的地方
      Do 10,j = k,3
         A(i,j)=A(i,j)-A(k,j)*(A(i,k)/A(k,k))
         B(i)=B(i)-B(k)*(A(i,k)/A(k,k))
      10 continue
在j循环下求B(i), 但整一行代码就没有出现一个j, 觉得不合理. 顺便说, DO循环完全可以用
      DO j = k,3
         A(i,j)=A(i,j)-A(k,j)*(A(i,k)/A(k,k))
         B(i)=B(i)-B(k)*(A(i,k)/A(k,k))
      ENDDO
continue什么的有点老代码的感觉. 只是意见, 不喜欢也没关系.

10 楼

发帖再次出现乱码. notepad++ 显示楼主代码很多问号... 郁闷.

我来回复

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