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

Matrix 如何在Fortran中从.dat中的矩阵中读取2个向量,matrix,vector,fortran,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,*) "I

我想用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。你能帮我继续吗

首先,您需要将
x
y
声明为秩1和大小3的数组:

real*8 x(3), y(3)
以及结果的标量变量 实数*8结果

不要写入单元
6
,而是使用
*

write(*,*) "Insert..."
但我什么都不会写

现在你可以读向量了。如果它们是按行存储的,您可以一次读取它们

read(10,*) x

(阅读任何教科书中的隐含do)

然后对
y
也一样

然后,您可以将它们生成一个标量积:

result = dot_product(x, y)
(见附件)

请注意,
real*8
不是法定的Fortran标准,只是一个非标准的扩展。您可以使用
双精度
,直到您学会各种类型

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