我想在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。你能帮我继续吗?
答案 0 :(得分:0)
首先,您需要将x
和y
声明为等级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
代替,直到您学习种类。