Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВС13 / ЛабРаб / lab123 / ВВС Лабораторная работа №3.doc
Скачиваний:
38
Добавлен:
17.03.2015
Размер:
199.68 Кб
Скачать

А.В. Филатов

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

по курсу:

«Высокопроизводительные вычислительные системы»

Решение систем линейных уравнений.

Содержание:

«Высокопроизводительные вычислительные системы» 1

1. Введение. 1

Цель лабораторной работы 1

Основные характеристики лабораторной работы 1

2. Методические указания к лабораторной работе. 2

Методы решения систем линейных уравнений 2

Метод исключения (метод Гаусса) 2

Итерационный метод Гаусса-Зейделя 5

Итерационный метод Якоби 6

Блочный метод 7

Алгоритм выделения ветвей независимых операций в последовательной программе для её распараллеливания. 8

Критерий выделения параллельных ветвей для машин класса МКМД (MIMD) 8

3. Задание. 10

Домашняя подготовка 10

Задание в лаборатории 10

4. Литература 11

Приложение 1. Варианты задания 11

Приложение 2. Содержание отчёта о выполнении лабораторной работы. 11

Приложение 3. Основные функции библиотеки MPI. 11

1. Введение.

Цель лабораторной работы

Приобретение навыков распараллеливания алгоритмов численных математических методов, широко применяемых при решении научно-технических задач, а, так же приобретение навыков их реализации на высокопроизводительной ВС.

Основные характеристики лабораторной работы

В ходе выполнения ЛР, студенты знакомятся с одним из численных методов решения системы линейных уравнений. Дальнейшая работа предусматривает выполнение нескольких этапов подготовки параллельной программы. Сюда входят: 1) Отладка последовательного алгоритма указанного в задании численного метода; 2) Выявление независимых операций и создание параллельного алгоритма этого метода; 3) Написание параллельной программы с использованием библиотеки MPIреализующий данный алгоритм; 4) Подготовка тестовой задачи. Далее, в ходе лабораторной работы, происходит отладка и выполнение программы на кластерной параллельной ВС.

2. Методические указания к лабораторной работе. Методы решения систем линейных уравнений Метод исключения (метод Гаусса)

Метод исключения или метод Гаусса является одним из наиболее часто применяемых прямых (не итерационных) методов решения систем линейных уравнений.

Чтобы проиллюстрировать этот метод, рассмотрим сначала систему из трёх уравнений с тремя неизвестными:

{

a11x1+a12x2+a13x3

a21x1+a22x2+a23x3

a31x1+a32x2+a33x3

=b1,

=b2,

=b3.

(3.1)

(3.2)

(3.3)

В такой системе по крайней мере один из коэффициентов a11,a22,a33 должен быть отличен от нуля, иначе мы имели бы дело в этих трёх уравнениях только с двумя неизвестными. Если a11=0, то можно переставить уравнения так, чтобы коэффициент при x1 в первом уравнении был отличен от нуля. Очевидно, что перестановка уравнений оставляет систему неизменной: её решение остаётся прежним.

Теперь введём множитель

m2=a21/a11.

Умножим первое уравнение системы (3.1) на m2 и вычтем его из уравнения (3.2). (“Первое” и “второе” уравнения мы берём уже после перестановки, если она была необходима.) Результат вычитания равен:

(a21 - m2a11)x1+(a22 - m2a12)x2+(a23 - m2a13)x3=b2 - m2b1. (3.4)

Но ведь при этом

a21 - m2a11= a21 – (a21/a11)a11=0,

так что x1 исключено из второго уравнения (конечно именно для достижения такого результата и было выбрано значение m2). Определим теперь новые коэффициенты

a’22

a’23

b’2

=a22 - m2a12,

=a23 - m2a13,

=b2 - m2b1.

Тогда уравнение (3.2) приобретает вид

a’22x2+ a’23x3

= b’2.

(3.5)

Заменим второе из первоначальных уравнений (3.2) уравнением (3.5) и введём множитель для третьего уравнения

m3=a31/a11.

Умножим первое уравнение на это множитель и вычтем его из третьего. Коэффициент при x1 снова становится нулевым, и третье уравнение приобретает вид

a’32x2+ a’33x3

= b’3.

(3.6)

Где

a’32

a’33

b’3

=a32 – m3a12,

=a33 – m3a13,

=b3 – m3b1.

Если теперь в исходной системе уравнений заменить (3.3) на (3.6), то новая система выглядит так:

{

a11x1+a12x2+a13x3

a’22x2+ a’23x3

a’32x2+ a’33x3

=b1,

=b’2,

=b’3.

(3.1)

(3.5)

(3.6)

Полученная система уравнений ((3.1)(3.5)(3.6)) полностью эквивалентна исходной системе уравнений ((3.1)(3.2)(3.3)). Нетрудно заметить, что проведённые нами действия позволили исключить из второго и третьего уравнений системы член с переменной x1. Таким образом, два последних уравнения представляют собой систему из двух уравнений с двумя неизвестными; если теперь найти решение этой системы, т.е. определить x2 и x3, то результат можно подставить в первое уравнение и найти x1.

Попытаемся теперь исключить x2 из двух последних уравнений. Если a’22=0, то снова мы переставим уравнения так, чтобы a’22 было отлично от нуля. (Если же a’22=0 и a’32=0, то система вырождена и либо вовсе не имеет решения, либо имеет бесчисленное множество решений.)

Введём новый множитель

m’3=a’32/a’22.

Умножим уравнение (3.5) на m’3 и вычтем его из (3.6). Результат вычитания равен

(a’32 – m’3a’22)x2+(a’33 – m’3a’23)x3=b’3 – m’3b’2.

В силу выбора m’3

a’32 – a’3a’22=0.

Полагая

a”33

b”3

=a’33 – m’3a’23,

=b’3 – m’3b’2.

окончательно получаем

a”33x3

=b”3.

(3.7)

Уравнение (3.6) можно заменить уравнением (3.7), после чего система уравнений приобретает следующий вид:

{

a11x1+a12x2+a13x3

a’22x2+ a’23x3

a”33x3

=b1,

=b’2,

=b”3.

(3.1)

(3.5)

(3.7)

Такая система уравнений иногда называется треугольной из-за своего внешнего вида.

Теперь, для решения системы уравнений надо определить x3 из (3.7), подставить этот результат в (3.5), определить x2 из (3.5), подставить x2 и x3 в (3.1) и определить x1. Этот процесс, который обычно называется обратной подстановкой, определяется в нашем случае формулами

x3

x2

x1

= b”3/a”33,

= (b’2 - a’23x3)/ a’22,

= (b1 - a12x2 - a13x3)/ a11.

Таким образом решается система состоящая из трёх линейных уравнений.

Теперь рассмотрим общий случай, когда имеется система из n уравнений с n неизвестными. Обозначим неизвестные через x1, x2, …, xn и запишем систему уравнений в следующем виде:

{

a11x1+a12x2+…+a1nxn

a21x1+a22x2+…+a2nxn

………………………………….

an1x1+an2x2+…+annxn

=b1,

=b2,

….

=bn.

(3.8)

Для системы из n уравнений мы должны будем провести n-1 этапов исключения. На каком-то k –м этапе исключения m, a и b подсчитываются по следующим формулам:

m(k-1)i=

a(k)ij=

b(k)i=

a(k-1)ik/a(k-1)kk,

a(k-1)ij - m(k-1)ia(k-1)kj,

b(k-1)i – m(k-1)ib(k-1)k.

i=k+1,…,n,

j=k,…,n.

- где верхний индекс у каждого параметра означает номер этапа, на котором этот параметр подсчитывается.

Необходимо четко представлять себе смысл индексов i,j, иk.

kозначает номер того уравнения, которое вычитается из остальных, а так же номер того неизвестного, которое исключается из оставшихсяn-k уравнений.

i означает номер уравнения, из которого в данный момент исключается неизвестное.

j означает номер столбца.

При k=n-1происходит исключениеxn-1 из последнего уравнения.

Окончательная треугольная система уравнений записывается следующим образом:

{

a11x1+a12x2+…+a1nxn

a’22x2+…+a’2nxn

………………………………….

an-1nnxn

=b1,

=b’2,

….

=bn-1n.

(3.9)

Обратная подстановка для нахождения значений неизвестных задаётся формулами:

xn=

xn-1=

……

xj=

b(n-1)n/a(n-1)nn,

(b(n-2)n-1 - a(n-2)n-1,nxn)/ a(n-2)n-1,n-1,

…………………………..

(b(j-1)j - a(j-1)j,nxn- …- a(j-1)j,j+1xj+1 /a(j-1)j,j.

Для

j=n-2,n-3,…,1.