Мне нужно написать программу, которая решает линейные уравнения с помощью метода Крамера и спросить, в частности, найти определитель с расширением Лапласа.Реализация расширения Лапласа в Фортране
det A = sum on i=1...N:(-1)**(i+1) a_i1 det ||A||_i1
, где ||A||_i1
является кофактором матрицу A
, в n-1 X n-1
матрицу, созданную за счет устранения i
строку и столбец 1. и вот где я застрял.
Это то, что я написал до сих пор
integer, parameter :: rk= selected_real_kind(6)
end module prec
module lap
use prec
implicit none
contains
recursive function det(a,n) result (d)
real(kind=rk), intent(in), dimension(n,n) :: a
real(kind=rk), dimension(n-1,n-1) :: b
real(kind=rk) :: d
integer ::i
integer, intent(in)::n
if (size(a) > 4) then
do i=1,n
b(1:(i-1),:) = a(1:(i-1),:)
b(i:n,:) = a((i+1):n,:)
b(:,:) = a(:,2:n)
d= ((-1)**(i+1))*a(i,1)*det(b,n)
end do
else
d = a(1,1)*a(2,2)-a(1,2)*a(2,1)
end if
end function det
end module lap
program sistema
он продолжает говорить мне, что у меня есть, не совместимые массивы, даже если я с помощью подмножества (и мой профессор говорит, что это довольно легко получить | | с подмножествами).
Куда он жалуется компилятор? Я также отмечу, что на вашем примере, по-видимому, отсутствуют фрагменты. – francescalus
То, что вы написали до сих пор, похоже, является двумя последними строками модуля под названием 'prec', модуля, называемого' lap', и первой строкой программы, называемой 'sistema'. Вам нужно быть более ясными о том, что ваш код и точно о том, какие сообщения об ошибках генерирует ваш компилятор. И на каких строках в источнике. –