如何从Fortran中的.dat中的矩阵中读取2个向量

时间:2017-03-18 13:35:26

标签: matrix vector fortran

我想在Fortran中创建一个程序,该程序将具有以下格式的.dat文件中的向量相乘:

                         x1 y1 z1
                         x2 y2 z2

索引1和2分别指向向量1和2。首先,我想确定向量,到目前为止我已经

  program ex2
          implicit none
          real*8 x
          integer i
          write(6,*) "Insert the vectors from vet_in.dat"
          open (10, file ="vet_in.dat")
          read (10,*) x(i), i=1,3
  end program ex2

阅读的行(10,*)被我吸取了,我不太明白,我认为fortran确定了ij矩阵索引。然后我想将x1.x2,y1.y2和z1.z2相乘,也许可以使用循环和de if。你能帮我继续吗?

1 个答案:

答案 0 :(得分:0)

首先,您需要将xy声明为等级1和大小3的数组:

real*8 x(3), y(3)

还有结果的标量变量     真实* 8结果

请勿写入单位6,而是使用*

write(*,*) "Insert..."

但我根本不会写任何东西。

现在你可以阅读矢量了。如果它们存储在行中,您可以一次性读取它们

read(10,*) x

read(10,*) (x(i), i=1, 3)

(在任何教科书中阅读暗示做)。

然后y也一样。

然后你可以制作它们的标量产品:

result = dot_product(x, y)

(见https://gcc.gnu.org/onlinedocs/gfortran/DOT_005fPRODUCT.html

result = sum(x*y)

result = 0
do i = 1, 3
  result = result + x(i) * y(i)
end do

请注意,real*8不是法定标准Fortran,只是非标准扩展。您可以使用double precision代替,直到您学习种类。