Решение систем линейных алгебраических уравнений 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Решение систем линейных алгебраических уравнений



 

Точные методы

 

Метод Гаусса

 

Входные параметры: n—целое положительное число, равное порядку n системы; а — массив из n х n действительных чисел, содержащий матрицу коэффициентов системы (а(1) = а11, а(2) = a12…а(n) = аn1, а(n + 1) = а12,.... а(n х n) = аnn); b — массив из n действительных чисел, содержащий столбец свободных членов системы (b(1) = b1, b(2)=b2,…b(n)=bn).

Выходные параметры: b—массив из n действительных чисел (он же входной); при выходе из программы содержит решение системы b(l) = x1, b(2) = x2, … b(n) = хn; error—признак правильности решения (код ошибки): если ks = 0, то в массиве b содержится решение системы, если error= 1, исходная система не имеет единственного решения (определитель системы равен нулю).

Перед обращением к подпрограмме SIMQ необходимо:

1) описать массивы а и b. Если система содержит n уравнений, то массив а должен содержать n2элементов, а массив b – n элементов;

2) присвоить значение параметру n, который равен числу
уравнений системы;

3) присвоить элементам массивов а и b значения коэффициентов системы следующим образом: a(l) = a11, а(2) = а21, а(3) = а31,…а(n) = аn1 а(n+1) = а12, а(n+2) = а22… а(n x n) = аnn. b(1) = b1, b(2)=b2,…b(n)=bn

4) проверить соответствие фактических параметров по типу и порядку следования формальным параметрам подпрограммы SIMQ. Параметры а и b - величины вещественного типа, n и error - целого типа.

 

Задание. Используя программу SIMQ, решить заданную систему трех линейных уравнений. Схема алгоритма приведена на рисунке 13.

Порядок выполнения лабораторной работы:

1. Составить головную программу, содержащую обращение к SIMQ и печать результатов;

2. Произвести вычисления на ЭВМ.

Пример. Решить систему уравнений

 

 

 

Рисунок 13 – Схема алгоритма метода Гаусса

 

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

 

PROCEDURE SIMQ(Nn:Integer;Var Aa:TMatr;Var Bb:TVector;Var Ks:Integer);

Label M1;

Const Eps=1e-21;

Var Max,U,V: Real; I,J,K1,L: Integer;

Begin

For I:=1 To Nn Do Aa[i,Nn+1]:=Bb[i];

For I:=1 To Nn Do

Begin

Max:=Abs(Aa[i,i]); K1:=I; { запоминает номер строки с максимальным элементом }

For L:=I+1 To Nn Do If (Abs(Aa[l,i])>Max) Then

Begin

Max:=Abs(Aa[l,i]); K1:=L;

End;

I f(Max<Eps) Then Begin Ks:=1; Goto M1;

End Else Ks:=0;

If K1<>I Then

For J:=I To Nn+1 Do { обмен местами элементов строк с максимальным элементом }

Begin U:=Aa[i,j]; Aa[i,j]:=Aa[k1,j]; Aa[k1,j]:=U;

End;

V:=Aa[i,i]; { элемент на главной диагонали, являющийся максимальным }

For J:=I To Nn+1 Do Aa[i,j]:=Aa[i,j]/V;

For L:=i+1 To Nn Do {все по следующие строки после строки с максимальным элементом }{ при I=1: L=2 (2,2),(2,3)..(2,Nn+1)

L=3 (3,2),(3,3),..(3,Nn+1)

L=Nn (Nn,2), (Nn,3),.. (Nn,Nn+1) }

Begin

V:=Aa[l,i]; For J:=I+1 To Nn+1 Do Aa[l,j]:=Aa[l,j]-Aa[i,j]*V;

End;

End;

Bb[nn]:=Aa[Nn,Nn+1]; { находим n-ый элемент решения }

For I:=Nn-1 Downto 1 Do { находим в обратном порядке все элементы решения }

Begin Bb[i]:=Aa[i,nn+1];

For J:=I+1 To Nn Do Bb[i]:=Bb[i]-Aa[i,j]*Bb[j];

End;

M1:End;

 

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

X(1)=.100000E+01 Х(2)=.200000Е+01 Х(3)=.З00000Е + 01

признак выхода 0

 

Варианты заданий для решения систем линейных алгебраических уравнений методом Гаусса приведены в таблице 1.

 

Метод квадратных корней Холецкого

 

Входные параметры: n—целое положительное число, равное порядку n системы; а — массив из n х n действительных чисел, содержащий матрицу коэффициентов системы (а(1) = а11, а(2) = a12…а(n) = аn1, а(n + 1) = а12,.... а(n х n) = аnn); b — массив из n действительных чисел, содержащий столбец свободных членов системы (b(1) = b1, b(2)=b2,…b(n)=bn).

Выходные параметры: b—массив из n действительных чисел (он же входной); при выходе из программы содержит решение системы b(l) = x1, b(2) = x2, … b(n) = хn; p—количество операций.

Схема алгоритма приведена на рисунке 14.

 

Пример. Решить систему уравнений

 

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

 

Procedure Holets(n:integer;a:TMatr;b:TVector;var x:TVector;var p:integer);

Var i,j,k:integer; a11:real;

Begin

Out_Slau_T(n,a,b);

For i:=1 To n Do Begin

If i<>1 Then Begin

If a[i,i]=0 Then Begin

p:=0; error:=2; MessageDlg('!!!!',mtError,[mbOk],0);

Exit; End;

a[1,i]:=a[1,i]/a[1,1];

End;

For j:=1 To i Do Begin

For k:=1 To j-1 Do Begin

a[i,j]:=a[i,j]-a[i,k]*a[k,j];

End;

For i:=1 To n Do Begin

For j:=1 To i-1 Do b[i]:=b[i]-a[i,j]*b[j];

If a[i,i]=0 Then Begin

p:=0; error:=2; MessageDlg('!!!!',mtError,[mbOk],0);

Exit; End;

b[i]:=b[i]/a[i,i];

End;

For i:=n DownTo 1 Do Begin

For j:=n DownTo i+1 Do b[i]:=b[i]-a[i,j]*b[j];

End;

x:=b;

p:=2*n*n;

End;

 

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

X(1)=.100000E+01 Х(2)=.200000Е+01 Х(3)=.З00000Е + 01

 

 

Рисунок 14 - Схема алгоритма метода Холецкого

 

Тема лабораторной работы №1 для контроля знаний проиллюстрирована контрольно – обучающей программой.

Варианты заданий. Решить систему линейных уравнений вида Ах=b

 

Таблица 1

Номер варианта Матрица А коэффициентов системы Столбец свободных членов b  
       
  1,84 2,25 2,53 -6,09  
  2,32 2,60 2,82 .-6,98  
  1,83 2,06 2,24 -5,52  
  2,58 2,93 3,13 -6,66  
  1,32 1,55 1,58 -3,58  
  2,09 2,25 2,34 -5,01  
  2,18 2,44 2,49 -4,34  
  2,17 2,31 2,49 -3,91  
  3,15 3,22 3,17 -5,27  
  1,54 1,70 1,62 -1,97  
  3,69 3,73 3,59 -3,74  
  2,45 2,43 2,25 -2,26  
  1,53 1,61 1,43 -5,13  
  2,35 2,31 2,07 -3,69  
  3,83 3,73 3,45 -5,98  
  2,36 2,37 2,13 1,48  
  2,51 2,40 2,10 1,92  
  2,59 2,41 2,06 2,16  
  3,43 3,38 3,09 5,52  
  4,17 4,00 3,65 6,93  
  4,30 4,10 3,67 7,29  
  3,88 3,78 3,45 10,41  
  3,00 2,79 2,39 8,36  
  2,67 '2,37 1,96 7,62  
  3,40 3,26 2,90 13,05  
  2,64 2,39 1,96 10,30  
  4,64 4,32 3,85 17,89  
  2,53 2,36 1,93 12,66  
  3,95 4,11 3,66 21,97  
  2,78 2,43 1,94 13,93  
  2,16 1,96 1,56 13,16  
  3,55 3,23 2,78 21,73  
  4,85 4,47 3,97 29,75  
  2,69 2,47 2,07 19,37  
  2,73 2,39 1,92 19,43  
Продолжение таблицы 1  
       
  2.93 2,52 2,02 20,80  
  3,72 3,47 3,06 30,74  
  4,47 4,10 3,63 36,80  
  4,96 4,53 4,01 40,79  
  4,35 4,39 3,67 40,15
  4,04 3,65 3,17 36,82
  3,14 2,69 2,17 28,10
  4,07 3,79 3,37 40,77
  2,84 2,44 1,95 27,68
  4,99 4,50 3,97 49,37
  3,19 2,89 2,47 33,91
  4,43 4,02 3,53 47,21
  3,40 2,92 2,40 32,92
  2,57 2,26 1,84 28,66
  4,47 4,03 3,57 50,27
  4,89 4,40 3,87 55,03
  2,83 2,50 2,08 33,28
  3,00 2,55 2,07 33,59
  3,72 3,21 2,68 43,43
  3,78 3,44 3,02 46,81
  4,33 3,88 3,39 53,43
  4,76 4,24 3,71 58,73
  4,59 4,24 3,82 59,54
  4,83 4,36 3,88 62,33
  4,06 3,53 3,01 52,11
  4,56 4,20 3,78 61,86
  3,21 2,73 2,25 42,98
  4,58 4,04 3,52 61,67
  3,75 3,39 2,97 53,38
  4,18 3,70 3,22 59,28
  4,43 3,88 3,36 62,62
  2,95 2,58 2,16 44,16
  5,11 4,62 4,14 46,68
  4,38 3,82 3,30 65,34
  2,93 2,55 2,14 46,41
  3,47 2,98 2,50 54,78
  4,78 4,22 3,70 75,81
  3,74 3,36 2,94 63,26
  4,02 3,51 3,04 67,51
  4,18 3,61 3,09 70,03
Продолжение таблицы 1
     
  4,07 4,28 3,87 84,43
  5,30 4,79 4,32 95,45
  5,11 4,54 4,03 91,69
  4,90 4,50 4,09 94,18
  3,79 3,27 2,81 71,57
  4,01 3,43 2,91 75,45
  4,25 3,84 3,43 86,07
  3,86 3,34 2,87 77,12
  5,40 4,82 4,30 108,97
  3,35 2,94 2,53 70,69
  5,41 4,88 4,41 115,38
  3,88 3,30 2,78 81,07
  3,05 2,64 2,23 67,17
  4,14 3,61 3,14 91,43
  5,63 5,03 4,52 125,40
             


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



Поделиться:


Последнее изменение этой страницы: 2016-04-08; просмотров: 331; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.58.112.1 (0.014 с.)