!------------------------------------------------------------------------------------------------------------
!подпрограмма проверки данных на корректность; параметры: isignal- !флаг-результат, А - масссив для данных, ir- его размерность, kv-!размерность вектора
!---------------------------------------------------------------------------------------------------
subroutine proverka(isignal,ir)
common/m/ka,kia
common/v/kv
isignal=1
if(kv.lt.1.or.(kia-1).lt.1.or.kv.ne.(kia-1))then!размервектораилиматрицыменьше 1
print *,'nevernie dannie' ! или не равны друг другу
isignal=0
else
if((2*ka+4*kia-3).gt.ir)then !недостаточно места для всех данных и результатов
print *,'nehvatka pamyati'
isignal=0
end if
end if
end
!------------------------------------------------------------------------------------------------------------
!подпрограмма скалярного произведения матрицы на вектор; параметры: !А-массив исходных данных, ir-его размерность
!------------------------------------------------------------------------------------------------------------
subroutine mult(ai,di,al,au,vec,rez)
common/m/ka,kia
dimension Ai(kia)
dimension di(kia-1)
dimension Al(ka)
dimension Au(ka)
dimension vec(kia-1)
dimension rez(kia-1)
do i=1,kia-1,1
rez(i)=di(i)*vec(i)
k=i-ai(i+1)+ai(i)
l=ai(i+1)-ai(i)
do j=1,l,1
ij=ai(i)+j-1
rez(i)=rez(i)+al(ij)*vec(k)
rez(k)=rez(k)+au(ij)*vec(i)
k=k+1
end do
end do
end
!------------------------------------------------------------------------------------------------------------
! подпрограмма перевода текстовых файлов в файлы прямого доступа; !параметры: !А-массив исходных данных
!------------------------------------------------------------------------------------------------------------
subroutine convertor(a)
common/m/ka,kia
common/v/kv
dimension a(*)
read (11,*)kv
read (10,*)kia
kia=kia+1
read(10,*)(a(i),i=1,kia,1) !ai()
ka=a(kia)-1
read(10,*)(a(i),i=kia+1,2*kia-1,1) !di()
read(10,*)(a(i),i=2*kia,2*kia+ka-1,1) !au()
read(10,*)(a(i),i=2*kia+ka,2*ka+2*kia-1,1) !al()
do i=1,2*ka+2*kia-1,1
write(13,rec=i)a(i)
end do
read(11,*)(a(i),i=2*ka+2*kia,2*ka+3*kia-2,1) !vec()
do i=2*ka+2*kia,2*ka+3*kia-2,1
write(14,rec=i-2*ka-2*kia+1)a(i)
end do
end
!------------------------------------------------------------------------------------------------------------
! подпрограмма генерации матрицы размерности n*n и вектора размерности n
!параметры: n –размерность матрицы
!------------------------------------------------------------------------------------------------------------
subroutine generator(n)
common/m/ka,kia
common/v/kv
kia=n+1
ka=n-1
kv=n
write(13,rec=1)1.0
do i=2,kia,1 !write ia()
a=i-1
write(13,rec=i)a
end do
do i=kia+1,2*kia-1,1 !write di()
a=i-kia
write(13,rec=i)a
end do
do i=2*kia,2*kia+ka-1 !write al()
a=i-2*kia+1
write(13,rec=i)a
end do
do i=2*kia+ka,2*ka+2*kia-1,1 !write au()
a=3*kia+ka-i-2
write(13,rec=i)a
end do
do i=1,kia-1,1 !write vec()
a=i
write(14,rec=i)a
end do
end
!------------------------------------------------------------------------------------------------------------
! – подпрограмма вычисления скалярного произведения для сгенерированной !матрицы; параметры: n –размерность матрицы,rez массив для хранения !вектора-результата
!------------------------------------------------------------------------------------------------------------
subroutine rezult(n,rez)
dimension rez(n)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.