ВУЗ:
Рубрика:
115
do i = 0, nprocs-1
xcount (i) = ((i+1)*m_size/nprocs - i*m_size/nprocs)
xnumer (i) = i*m_size/nprocs
end do
do i = 0, nprocs-1
xcount2 (i) = xcount (iam)
xnumer2 (i) = xnumer (iam)
end do
! «0»-процесс рассылает всем процессам матрицу A
call MPI_BCAST (a(1,1), m_size*(m_size+1),
$ mpi_double_precision, 0, comm, ierr)
! вычисление начального приближения вектора x и значения
! максимальной ошибки max_err1 всеми процессами
max_err1=0.0
do i=1, m_size
x(i)=a(i,m_size+1)/a(i,i)
if (x(i).gt.max_err1) max_err1=dabs(x(i))
end do
! счетчик итераций
count1 = 1
drmax=0.0
! основной вычислительный цикл программы
do while (max_err1.gt.eps.or.drmax.gt.eps)
! вычисление вектора x - нового приближенного решения
! вычисление значения максимальной ошибки max_err и невязки
max_err=0d0
do i=first, last
summ=0
do j=1, i-1
summ=summ+a(i,j)*x(j)
end do
do j=i+1, m_size
summ=summ+a(i,j)*x(j)
end do
xx(i) = (a(i,m_size+1)-summ)/a(i,i)
max_err=dmax1(dabs((xx(i)-x(i))),max_err)
Страницы
- « первая
- ‹ предыдущая
- …
- 113
- 114
- 115
- 116
- 117
- …
- следующая ›
- последняя »
