Несовместимые ранги 0 и 1 в фортране - PullRequest
1 голос
/ 20 марта 2020

ab - матрица 4 x 5, т. Е. ab(4,5) и x - массив длины 4, т. Е. x(4)

x(4) = ab(4,5)/ab(4,4)
do i = 3, 1, -1
    x(i) = ( ab(i,5) - ab(i,i+1:4) * x(i+1:4) ) / ab(i,i)
end do

do l oop говорит несовместимые ранги 0 и 1.

1 Ответ

1 голос
/ 20 марта 2020

Вы можете использовать функцию SUM, чтобы уменьшить умножение массива до скаляра. то есть x(i) = ( ab(i,5) - SUM(ab(i,i+1:4) * x(i+1:4)) ) / ab(i,i). В качестве альтернативы можно использовать функцию DOT_PRODUCT DOT_PRODUCT(ab(i,i+1:4) , x(i+1:4))

...