решение уравнений метод Гауса. Решение систем линейных уравнений методом Гаусса
Скачать 187.11 Kb.
|
Лабораторная работа 1. Решение систем линейных уравнений методом Гаусса. Цель работы: Выполнить численное решение заданной системы линейных уравнений методом Гаусса. Результаты решения проверить непосредственным вычислением. Краткое теоретическое введение Метод Гаусса основан на приведении матрицы системы уравнений к треугольному виду. Это достигается последовательным исключением неизвестных из уравнений системы. Сначала с помощью первого уравнения исключается х1 из всех последующих уравнений системы. Затем с помощью второго уравнения исключается х2 из третьего и всех последующих уравнений. Этот процесс, называемый прямым ходом метода Гаусса, продолжается до тех пор, пока в левой части последнего (n – го) уравнения не останется лишь один член с неизвестным хn, т. е. матрица системы будет приведена к треугольному виду. Заметим, что к такому виду приводится лишь невырожденная матрица. В противном случае метод Гаусса неприменим. Обратный ход метода Гаусса состоит в последовательном вычислении искомых неизвестных: решая последнее уравнение, находим единственное неизвестное хn. Далее, используя это значение, из предыдущего уравнения вычисляем xn–1 и т. д. Последним найдем х1 из первого уравнения. Рис. 1. Структурограмма метода Гаусса Задание: Решить следующую систему уравнений: 2. – 6х1 + 2х2 + 6х3 – 5х4 = – 3, 2х2 + 8х4 = 4, 3х1 + 4х2 + 4х3 + 5х4 = 3, – 2х1 + 2х2 + 4х3 + 6х4 = 7. Program Meth_Gauss_System_Equation; Var i,j,k,N:integer; c,s:real; x:array[1..5] of real; b:array[1..5] of real; a:array[1..5,1..5] of real; Label 1,2,3,4,5,6; Begin a[1,1]:=-6; a[1,2]:=2; a[1,3]:=6; a[1,4]:=-5; a[2,1]:=0; a[2,2]:=2; a[2,3]:=0; a[1,4]:=8; a[3,1]:=3; a[3,2]:=4; a[3,3]:=4; a[1,4]:=5; a[4,1]:=-2; a[4,2]:=2; a[4,3]:=4; a[4,4]:=6; b[1]:=-3; b[2]:=4; b[3]:=3; b[4]:=7; N:=4; k:=1; 1: i:=k+1; If a[k,k]=0 then Begin Write; WriteLn; GoTo 6; end; 2: c:=a[i,k]/a[k,k]; a[i,k]:=0; j:=k+1; 3: a[i,j]:=a[i,j]-c*a[k,j]; If j < N then Begin j:=j+1; GoTo 3; end; b[i]:=b[i]-c*b[k]; If i < N then Begin i:=i+1; GoTo 2; end; If k < N-1 then Begin k:=k+1; GoTo 1; end; x[N]:=b[N]/a[N,N]; i:=N-1; 4: j:=i+1; s:=0; 5: s:=s+x[j]*a[i,j]; If j < N then Begin j:=j+1; GoTo 5; end; x[i]:=(b[i]-s)/a[i,i]; If i >1 then Begin i:=i-1; GoTo 4; end; For i:=1 to N do Begin Write('x',i:1,' = ',x[i]:3:2);WriteLn; end; WriteLn; 6: Write; end. x1 = 0.97 x2 = 2.00 x3 = -1.98 x4 = 2.14 Ответ: x1 = 0,97, x2 =2,00 , x3 =-1,98 , x4 =2,14 Ответы на контрольные вопросы: В чем суть метода Гаусса? Суть этого метода заключается в приведении расширенной матрицы системы линейных уравнений к наиболее простому виду последовательностью так называемых элементарных преобразований, каждое из которых не меняет общего решения системы уравнений. Какому требованию должен удовлетворять ведущий элемент системы уравнений? Метод Гаусса является одним из наиболее универсальных и эффективных методов. Применение его особенно целесообразно для линейных систем с плотно заполненной матрицей коэффициентов. Однако реализация метода на ЭВМ требует около n2 ячеек оперативной памяти, что ограничивает порядок решаемой методом Гаусса системы уравнений (n < 103). Что необходимо предпринять в случае равенства нулю ведущего элемента? Если на каком то этапе Гауссово исключения ведущий элемент равен нулю, и существует ненулевой элемент, расположенный ниже ведущего элемента, то LU - разложение данной матрицы невозможно. Если же элементы ниже ведущего элемента нулевые, то выбираем новый ведущий элемент той же строки и следующего столбца. |