Міністерство освіти і науки України
Національний університет „Львівська політехніка”
ІКТА ,кафедра «Захист інформації»
Звіт
З ЛАБОРАТОРНОЇ РОБОТИ № 2
З КУРСУ “ КОМП’ЮТЕРНІ МЕТОДИ ДОСЛІДЖЕННЯ ІНФОРМАЦІЙНИХ ПРОЦЕСІВ ТА СИСТЕМ ”
НА ТЕМУ: “ МЕТОД ГАУССА ДЛЯ РОЗВ’ЯЗУВАННЯ СИСТЕМ
ЛІНІЙНИХ АЛГЕБРАЇЧНИХ РІВНЯНЬ“
Варіант 21
Львів-2007
Мета роботи – ознайомлення з прямими методами розв’язування систем лінійних
алгебраїчних рівнянь.
Короткі теоретичні відомості
Класичний метод Гауса.
Розглянемо систему рівнянь четвертого порядку:
(1)
Зауважимо, що елементи вектора-стовпчика вільних членів занесені в матрицю коефіцієнтів А.
Будемо вважати, що . З першого рівняння знаходимо х1:
, (2)
де , .
З допомогою рівняння (2) можна виключити з решти рівнянь, для чого достатньо підставити (2) для в друге, третє і четверте рівняння системи. Це і є першим кроком – кроком виключення невідомого .
,
Перехід від початкової системи
до новоствореної
відбувається за такою формулою:
Другий крок – виключення невідомого відбувається аналогічно:
Третій крок – виключення невідомого
,
;
Останнє рівняння можна переписати у вигляді:
або .
Отже, в результаті прямого ходу одержимо систему рівнянь:
Знаходження невідомих проводиться в оберненому ході методу Гауса шляхом зворотних підстановок.
Якщо п – кількість рівнянь (порядок) системи, то програмування обчислювального процесу проводиться так:
L – кількість кроків виключення ;
j – позначення другого індексу при визначенні α ;
і – номер рядка системи ;
k – номер стовпця.
Можна записати, що для всіх
Обернений хід: , .
Отже, обчислювальна схема прямого ходу методу Гауса має вигляд:
Для
Для
Для
Для
i піддається спрощенню.
Початкове обчислення всіх коефіцієнтів α не є обов’язковим. Це випливає з наступного. Наприклад, перехід від початкової системи коефіцієнтів до наступної відбувається так:
Наприклад, коефіцієнти першого чи другого стовпця нової системи утворюються за правилом
,
або
Отже, визначивши, наприклад α12 зразу ж можна переходити до визначення коефіцієнтів нової системи і т.п. Таким чином цикли по J i по K можна об’єднати (оскільки, що J i K змінюються в однакових межах).
Якщо замінити на та цикли по J та по K об’єднати в один (тобто J на K), то одержимо загальну форму методу виключення Гауса із стовпцевою формою розкладу матриці А до трикутного вигляду)
В кінці цих перетворень одержимо:
ЗАВДАННЯ ДО ЛАБОРАТОРНОЇ РОБОТИ
Розв’язати систему лінійних алгебраїчних рівнянь методом Гауса:
Таблиця ідентифікаторів констант, змінних, процедур та функцій, використаних у програмі, та їх пояснення:
n
Константа, що задає кількість рівнянь (порядок) системи
m
Константа, що задає кількість коефіцієнтів a і вільних членів b
l
Змінна, кількість кроків виключення
i
Змінна, номер рядка системи
k
Змінна, номер стовпця, позначення другого індексу при визначенні α
c
Змінна, в якій зберігаються коефіцієнти з головної діагоналі
s
Змінна, яка використовується для знаходження невідомих
a
Змінна, масив, що задає кількість коефіцієнтів a і вільних членів b
x
Змінна, масив, що задає кількість невідомих
write()
Функція вводу елементів
writeln()
Функція вводу елементів
readln()
Функція виводу елементів
Текст програми мовою Pascal
Program gaus(input,output);
const n=4 ;m=5 ;
var l,i,k:integer;
c,s:real;
a:array[1..n,1..m] of real;
x:array[1..n] of real;
begin
for i:=1 to n do
for k:=1 to m do
begin
write('a[',i,',',k,']=');
readln(a[i,k]);
end;
for l:=1 to n-1 do
begin
c:=a[l,l];
for k:=l+1 to n+1 do
begin
a[l,k]:=-a[l,k]/c;
for i:=l+1 to n do
a[i,k]:=a[i,k]+a[i,l]*a[l,k];
end;
end;
x[n]:=-a[n,n+1]/a[n,n];
for i:=n-1 downto 1 do
begin
s:=a[i,n+1];
for k:=i+1 to n do
s:=s+a[i,k]*x[k];
x[i]:=s;
end;
for i:=1 to n do
writeln(‘x[‘,i,’]=’,x[i]);
readln;
end.
Результат роботи програми:
a[1,1]=8.3
a[1,2]=
a[1,3]=4.1
a[1,4]=1.9
a[1,5]=
a[2,1]=3.92
a[2,2]=8.45
a[2,3]=
a[2,4]=2.46
a[2,5]=-12.21
a[3,1]=3.77
a[3,2]=
a[3,3]=8.04
a[3,4]=2.28
a[3,5]=
a[4,1]=2.21
a[4,2]=
a[4,3]=1.69
a[4,4]=6.99
a[4,5]=8.35
x[1]=
x[2]=
x[3]=
x[4]=
Висновок:
Виконавши дану лабораторну роботу я ознайомився з прямими методами розв’язування систем лінійних алгебраїчних рівнянь.