Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Министерство образования и науки РФ
Кафедра ПМ
Лабораторная работа №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
Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.