Курсовая работа
по дисциплине «Вычислительная математика»
на тему: «Численное решение некоторых задач линейной алгебры»
Выполнил: Пупышев В.Д.
Глазов 2012 г.
Содержание
Введение
. Теоретическая часть
1.1 Вычисление точного значения определителей
.2Нахождение обратной матрицы методом Гаусса
2. Практическая часть
2.1 Вычисление определителей
2.2 Пример нахождения обратной матрицы
Заключение
Список литературы
Приложения
Введение
Линейная алгебра - часть алгебры, изучающая векторные (линейные) пространства и их подпространства, линейные отображения (операторы), линейные, билинейные, и квадратичные функции на векторных пространствах.
Численные методы линейной алгебры - раздел вычислительной математики, посвященный математическому описанию и исследованию процессов численного решения задач линейной алгебры.
Наиболее важными являются задачи линейной алгебры - вычисление определителя, обратной матрицы, собственных значений и др.
Целями работы являются:
·изучить методы нахождения определителя и обратной матрицы методом Гаусса;
·разработать вычислительный алгоритм в программе Pascal ABC для вычисления определителей и для нахождения обратной матрицы.
1.Теоретическая часть
.1 Вычисление точного значения определителей
Вычисление определителей основывается на их известных свойствах, которые относятся к определителям всех порядков. Вот эти свойства:
. Если переставить две строки (или два столбца) определителя, то определитель изменит знак.
. Если соответствующие элементы двух столбцов (или двух строк) определителя равны или пропорциональны, то определитель равен нулю.
. Значение определителя не изменится, если поменять местами строки и столбцы, сохранив их порядок.
. Если все элементы какой-либо строки (или столбца) имеют общий множитель, то его можно вынести за знак определителя.
. Значение определителя не изменится, если к элементам одной строки (или столбца) прибавить соответствующие элементы другой строки (или столбца), умноженные на одно и то же число. Для определителей третьего порядка это свойство может быть записано, например, так:
. Определитель второго порядка вычисляется по формуле
. Определитель третьего порядка вычисляется по формуле
Существует удобная схема для вычисления определителя третьего порядка (см. рис. 1 и рис. 2).
По схеме, приведенной на рис. 1, произведения соединеных элементов берутся со своим знаком, а по схеме рис. 2 - с обратным. Величина определителя равна алгебраической сумме полученных шести произведений.
В определителе порядка n алгебраическим дополнением элемента, стоящего на пересечении k-го столбца и l-й строки, называется определитель порядка (n - 1), получаемый из данного вычеркиванием в нем строки и столбца, на пересечении которых стоит этот элемент, причем к этому определителю присоединяется множитель (-1)k+l, где (k + l) - сумма номеров вычеркнутой строки и столбца. Алгебраическое дополнение элемента, рассматриваемое без множителя (-1)k+l, называется минором этого элемента.
. Теорема Лапласа.
Определитель равен сумме произведений каждого элемента некоторой строки (или столбца) на его алгебраическое дополнение.
Условимся обозначать элементы определителя маленькими буквами, а их алгебраические дополнения - соответствующими большими буквами с теми же индексами. Так, как алгебраическое дополнение элемента a3 будем обозначать через A3, алгебраическое дополнение элемента d4 - через D4 и т. д. На основании свойства 8 определитель (3) может быть представлен, например, в таком виде:
D = a3A3 + b3B3 + c3C3 + d3D3 + e3E3
Это равенство представляет собой разложение определителя по элементам третьей строки. По свойству 8 вычисление определителя порядка n сводится к вычислению определителей порядка (n - 1).
. Если все элементы какого-нибудь ряда определителя, кроме одного, равны нулю, то определитель равен этому не равному нулю элементу, умноженному на его алгебраическое дополнение.
С помощью указанных свойств можно вычислить определитель любого порядка.
1.2 Нахождение обратной матрицы методом Гаусса
линейный алгебра гаусс матрица определитель
Метод Гаусса является поистине универсальным методом в линейной алгебре, поскольку он применим и к решению систем линейных уравнений, и к решению определителей, и к отысканию обратной матрицы.
Теорема:
Пусть А квадратная невырожденная матрица. Если матрица (А | E) приведена с помощью элементарных преобразований строк к виду (Е | A-1), где Е - единичная матрица того же порядка, что и матрица А.
Из теоремы следует метод нахождения обратной матрицы методом Гаусса:
) к матрице А приписать справа единичную матрицу Е той же размерности;
) путем преобразований методом Гаусса над строками расширенной матрицы (А | E) матрица А приводится к единичной матрице;
) в результате вычислительного процесса на месте приписанной справа матрицы Е получится обратная матрица A-1.
Схематично процесс нахождения обратной матрицы выглядит следующим образом: (А | E) (E | A-1).
2.Практическая часть
2.1 Вычисление определителей
Пример 1: Вычислить определитель:
1)
Решение:
С помощью формулы (правило треугольника):
Получаем:
= 1*2*2 + 0*5*1 + 3*1*4 - 4*2*5 - 0*3*2 - 1*1*1 = -25
С помощью программы (см. Приложение, п.1):
2.2 Пример нахождения обратной матрицы
. Элементы первой строки умножим на (- 3) прибавим соответственно к элементам второй строки, получим . Затем элементы второй строки прибавим соответственно к элементам первой строки, получим . При выполнении следующего преобразования элементы второй строки умножим на (-1/2). В результате получим матрицу .
. Итак, обратная матрица имеет вид A-1 = .
С помощью программы найдём обратную матрицу методом Гаусса (см. Приложение, п. 1):
Заключение
В процессе создания курсовой работы было сделано следующее:
1) Изучили методы нахождения определителя и обратной матрицы применяемых при численном решении некоторых задач линейной алгебры.
) Разработали вычислительный алгоритм в программе Pascal ABC для вычисления определителей и для нахождения обратной матрицы.
) Решены задачи линейной алгебры и сравнили результаты.
В результате проделанной работы можно сделать следующие выводы: легко вычисляются лишь определители невысоких порядков и некоторые специальные типы определителей. Непосредственное нахождение определителя требует большого объема вычислений. Можно подсчитать время вычисления определителей на ЭВМ с заданным быстродействием. Примем для определенности среднее быстродействие равным 100 000 операций в секунду. Тогда для вычисления определителя 10-го порядка потребуется около 6 мин, а при n = 20 - около 1,4*1011 ч, т.е. свыше 5*109 сут. Приведенные оценки указывают на необходимость разработки и использования экономичных численных методов, позволяющих эффективно проводить вычисления определителей.
Литература
1. Пантина И.В., Синчуков. А.В. - 2-е изд., перераб. и доп. - М.: Московский финансово-промышленный университет «Синерия», 2012. - 176 с. (Университетская серия).
. Турчак Л.И. Основы численных методов: Учеб. пособие. - М.: Наука. Гл. ред. Физ.-мат. Лит., 1987. - 320 с.
. Электронный ресурс. Определители и системы линейных алгебраических уравнений. [#"justify">. Электронный ресурс. Обратная матрица. Нахождение обратной матрицы методом алгебраических дополнений.
Приложение 1
Программый код для вычисления определителей.
program Opredelitel;crt;= 10;= array[1..N1, 1..N1] of real;: matrice;, J, N: integer;: real;Det(A: Matrice; N: integer): real;: matrice;: integer;, Mn, S: real;Minor(var C: matrice; A: Matrice; N, I, J: integer): real;, Jm, Ia, Ja, Nm: integer;:= N - 1; Im := 1; Ia := 1;Im <= Nm doIa <> I then:= 1; Ja := 1;Jm <= Nm doJa <> J then[Im, Jm] := A[Ia, Ja];:= Ja + 1; Jm := Jm + 1;Ja := Ja + 1;:= Ia + 1; Im := Im + 1;Ia := Ia + 1;; {*Minor*}N = 1 then Det := A[N, N];N = 2 then Det := A[1, 1] * A[2, 2] - A[2, 1] * A[1, 2];N > 2 then:= 0;I := 1 to N do:= Minor(B, A, N, I, 1);(I mod 2) = 1 then begin:= Det(B, N - 1);:= S + T * A[I, 1];begin:= Det(B, N - 1);:= S - T * A[I, 1];;;:= S;;; {*Determ*}('Введите порядок матрицы N: '); readln(N);I := 1 to N do('Введите элементы строки ', I: 2);
for J := 1 to N do readln(A[I, J]);;:= Det(A, N);('Определитель равен: ', D: 7: 4);;
end.
Приложение 2
Программый код для нахождения обратной матрицы.
program Gayss;crt;=2;= 0.000000001; { all numbers less than eps are equal 0 }matr=array[1..n,1..n] of real;,b,a0:matr;,j,imx,np:integer;,s1:real;PrintMatr(m,m1:matr;n,nz,nd:integer);,j:integer;i:=1 to n do(i=1) then write(np:2,':') else write(' ');j:=1 to n do write(m[i,j]:nz:nd);j:=1 to n do write(m1[i,j]:nz:nd);;;(np);;MultString(var a,b:matr;i1:integer;r:real);:integer;j:=1 to n do[i1,j]:=a[i1,j]*r;[i1,j]:=b[i1,j]*r;;;AddStrings(var a,b:matr;i1,i2:integer;r:real);
{ процедура прибавляет к i1 строке матрицы а 2i-ю умноженную на r}
var:integer;j:=1 to n do[i1,j]:=a[i1,j]+r*a[i2,j];[i1,j]:=b[i1,j]+r*b[i2,j];;;MultMatr(a,b:matr;var c:matr);,j,k:byte;:real;i:=1 to n doj:=1 to n do:=0;k:=1 to n do s:=s+a[i,k]*b[k,j];[i,j]:=s;;;sign(r:real):shortint;(r>=0) then sign:=1 else sign:=-1;;
{MAIN};i:=1 to n doj:=1 to n do[i,j]:=0;[i,j]:=1.0*random(8)-4;;[i,i]:=1;;
{ отладочные присвоения}[1,1]:= 1; a[1,2]:= 2; {a[1,3]:=4; a[1,4]:= 0;}[2,1]:= 3; a[2,2]:= 4; {a[2,3]:=4; a[2,4]:= 5;[3,1]:= 4; a[3,2]:= 5; a[3,3]:=6; a[3,4]:= 2;[4,1]:= 0; a[4,2]:=-2; a[4,3]:= 3; a[4,4]:=-4;[1,1]:= 5; a[1,2]:= 7; a[1,3]:= 7; a[1,4]:= 1;[2,1]:= 6; a[2,2]:= 6; a[2,3]:= 3; a[2,4]:= 4;[3,1]:= 5; a[3,2]:= 1; a[3,3]:= 1; a[3,4]:= 1;[4,1]:= 3; a[4,2]:= 3; a[4,3]:= 3; a[4,4]:= 3;i:=1 to n doj:=1 to n do a0[i,j]:=a[i,j];('Начальная матрица:'); np:=0;
PrintMatr(a,b,n,6,1);i:=1 to n doj:=i+1 to n do AddStrings(a,b,i,j,sign(a[i,i])*sign(a[j,i]));
{ PrintMatr(a,b,n,6,1);}(abs(a[i,i])>eps) then(a,b,i,1/a[i,i]);j:=i+1 to n do AddStrings(a,b,j,i,-a[j,i]);
{ PrintMatr(a,b,n,6,1);}else
writeln('Обратной матрицы не существует.');
halt;;
{writeln('Обратный ход:');}(a[n,n]>eps) theni:=n downto 1 do for j:=1 to i-1 do(a,b,j,i,-a[j,i]);;
{ PrintMatr(a,b,n,8,4);} else writeln('Обратной матрицы не существует.');
MultMatr(a0,b,a);('Начальная матрица. Обратная к ней матрица.:');
PrintMatr(a0,b,n,7,3);
writeln('Проверка: должна быть единичная матрица.');
PrintMatr(a,a,n,7,3);.