Matrix 如何在Fortran中从.dat中的矩阵中读取2个向量
我想用Fortran创建一个程序,该程序将.dat文件中的矢量相乘,该文件具有以下格式: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
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