fortran中矩阵的操作



我有矩阵和数组。我需要乘以它们的价值。然后找到和最大的一行,并给出它的数字和值。帮助我理解

real, allocatable, dimension(:,:) :: startArr
  real, allocatable:: x(:) , maxArr
 do i = 1,4
        do k=1,4
            startArr(1,i)*x(k)
            startArr(2,i)*x(k)
            startArr(3,i)*x(k)
            startArr(4,i)*x(k)
        end do
 end do

    S = startArr(1,1)+ startArr(1,2) + startArr(1,3) + startArr(1,4)
    D = startArr(2,1)+ startArr(2,2) + startArr(2,3) + startArr(2,4)
    M = startArr(3,1)+ startArr(3,2) + startArr(3,3) + startArr(3,4)
    K = startArr(4,1)+ startArr(4,2) + startArr(4,3) + startArr(4,4)

    maxArr = (S,D,M,K)
    max = S
    do i = 1,4
        if(maxArr(i)>max)
            max = maxArr(i)
    end do

我无法评论您的乘法算法是否正确。你必须用你的数学来检查它,但是你的代码有些地方是错误的。我试着纠正它们。这是我自己的Compaq Fortran版本。

    program matrix_Manipulation
implicit none
real, allocatable, dimension(:,:) :: startArr,MultipliedArray
real, allocatable:: x(:) , sumLine(:)
real:: maxValue
integer::i,k
 allocate(startArr(4,4),x(4),sumLine(4),MultipliedArray(4,4))
  startArr(1,1)=1 
  startArr(2,1)=2 
  startArr(3,1)=3 
  startArr(4,1)=4 
  startArr(1,2)=5 
  startArr(2,2)=6 
  startArr(3,2)=7 
  startArr(4,2)=8 
  startArr(1,3)=9 
  startArr(2,3)=10
  startArr(3,3)=11
  startArr(4,3)=12
  startArr(1,4)=13
  startArr(2,4)=14
  startArr(3,4)=15
  startArr(4,4)=16
  x(1)=2  
  x(2)=0.5
  x(3)=8  
  x(4)=1  
 do i = 1,4
        do k=1,4
            MultipliedArray(1,i)=startArr(1,i)*x(k)
            MultipliedArray(1,i)=startArr(2,i)*x(k)
            MultipliedArray(1,i)=startArr(3,i)*x(k)
            MultipliedArray(1,i)=startArr(4,i)*x(k)
        end do
 end do

    sumLine(1) = sum(MultipliedArray(1,1:4))
    sumLine(2) = sum(MultipliedArray(2,1:4))
    sumLine(3) = sum(MultipliedArray(3,1:4))
    sumLine(4) = sum(MultipliedArray(4,1:4))
    maxValue = MAXVAL(sumLine)

end program matrix_Manipulation

MAXVAL是一个内置函数,用于计算数组或矩阵的最大元素。这是在Comaq Fortran中,在gFortran或其他编译器中可能是不同的函数。

最新更新