Умножение профильной несимметричной матрицы на вектор (Лабораторная работа № 3)

Страницы работы

9 страниц (Word-файл)

Содержание работы

Министерство образования и науки РФ

Кафедра ПМ

Лабораторная работа №3

по дисциплине

программирование вычислений

вариант №15.2

Преподаватель: Токарева М.Г.

Факультет: ФПМИ

Группа: ПМ-62

Студентка: Коротенко Д.Ю.

Новосибирск 2008г.

1.Цель работы

2.Условие задачи

Умножение профильной несимметричной матрицы на вектор.

3.Используемые формулы

Профиль – часть строки от первого до последнего ненулевого элемента в строке; элементы матрицы хранятся последовательно по строкам в одномерном массиве.

Массивы, необходимые для хранения квадратной матрицы в профильном несимметричном формате:

Ia(n+1) – целый индексный массив содержит указатели начала строк профиля в массиве матрицы Аu() и Al()

А(ia(n+1)) – вещественный массив содержит последовательно элементы профилей каждой строки

Di(n) – целый массив содержит диагональные элементы исходной матрицы.

Массивы  Аu() и Al() хранят верхний и нижний треугольники матрицы А по строкам и столбцам соответственно.

В программе в массиве данных А последовательно хранятся массивы ia(), au(), al(), di(), vec(), rez(), где vec(n) – требуемый для умножения вектор, а rez(n) – массив для хранения результирующего вектора 

Ir – размерность программного массива исходных данных определена методом тестирования и равна 2*108

Массив данных А()

1                      kia                    2*kia-1            2*kia+ka-1        2*kia+2*ka-1       3*kia+2*ka-2       4*kia+2*ka-3

Ia()

Di()

Au()

Al()

Vec()

Rez()

4.Структура программы

      subroutine vvod(A,ir,is) - подпрограмма ввода исходных данных

параметры: А - масссив для данных, ir- его размерность, is-флаг

subroutineproverka(isignal,ir) - подпрограмма проверки данных на корректность

параметры: isignal- !флаг-результат, ir- размерность массива данных

subroutinemult(ai,di,al,au,vec,rez) - подпрограмма скалярного произведения матрицы на вектор

параметры: ai,di,al,au,vec,rez-массивы исходных данных

subroutine convertor(a) – подпрограмма перевода текстовых файлов в файлы прямого доступа

параметры: a –массивы для промежуточных данных

subroutine generator(n) -подпрограмма генерации матрицы размерности n*n и вектора размерности n

параметры: n–размерность матрицы

subroutine rezult(n,rez) – подпрограмма вычисления скалярного произведения для сгенерированной матрицы

параметры: n–размерность матрицы,rez массив для хранения вектора-результата

subroutinewritematrx(ai,di,al,au) –подпрограмма вывода плотной матрицы по исходной профильной матрице

параметры: ai,di,al,au-массивы исходных данных

Взаимодействие подпрограмм

program main                                                             subroutine mult(A,ir)


                               subroutine convertor(a)                 subroutine generator(n)

                     subroutine rezult(n,rez)                          subroutine writematrx(ai,di,al,au)

subroutine vvod (A,ir,is)                                                              

                                                                       subroutine proverka (A,ir,is)

5.Текстпрограммы

!---------------------------------------------------------------------------------------------------

!подпрограмма ввода исходных данных

!последовательно записывает массив индексов, матрицу, массив смещения !диагонали и вектор в один массив

!параметры: А - масссив для данных, ir- его размерность, is-флаг(для !проверки на корректность)

!---------------------------------------------------------------------------------------------------

      subroutine vvod(A,is,ir)

      common/m/ka,kia    !kia-размер массива индексов, ka –размер матрицы

      common/v/kv

      dimension A(*)

      call proverka(is,ir)

      if(is.eq.1)then

      do i=1,2*ka+2*kia-1,1           !write matrix  ai(),au(),al(),di()

      read (13,rec=i)a(i)

      end do

      do i=2*ka+2*kia,2*ka+3*kia-2

      read (14,rec=i-2*ka-2*kia+1)a(i) ! write vector  vec()

      end do

      end if

      end                             

Похожие материалы

Информация о работе