Автор работы: Пользователь скрыл имя, 24 Сентября 2012 в 19:48, курсовая работа
Целью данной курсовой работы является следующее: исследовать область применения метода Гаусса к решению различных прикладных задач и
разработать программу «Решение задач методом Гаусса», выполняющую следующие операции:
1) Решение СЛАУ методом Гаусса
2) Нахождение обратной матрицы методом Гаусса
3) Вычисление определителей методом Гаусса
Введение
1 Теоретические сведения 4
1.1 Решение системы алгебраических линейных уравнений методом Гаусса 4
1.2 Вычисление обратной матрицы методом Гаусса 8
1.3 Вычисление определителя методом Гаусса 9
2 Практическая часть 11
2.1 Декомпозиция задачи 11
2.2 Схема взаимодействия интерфейсных форм 12
2.3 Схема взаимодействия модулей 14
2.4 Описание процедур и функций 15
2.5 Обоснование выбора структуры представления данных 15
2.6 Руководство пользователю 15
2.7 Тестирование 19
Заключение 30
Список использованных источников 31
Приложение А - Символьная схема алгоритма 32
Приложение Б – Код программы 41
Тест № 10. Вычисление определителя. Случай, когда значение определителя равно нулю.
Исходные данные:
Ожидаемый результат: 0
Результат работы программы: при занесении исходных данных выше, программа выдала результат, приведенный на рисунке 2.7.10.
Рисунок 2.7.10 – Окно программы с результатом решением
Анализ результата: полученный результат совпадает с ожидаемым.
Заключение
В результате выполнения данной курсовой работы получен конечный продукт, который представляет собой решения задач с помощью метода Гаусса. Программа рассчитана на широкий круг пользователей, так как может быть использована не только студентами, но и преподавателями, учителями и всеми желающими изучить решение задач с помощью метода Гаусса. Программа значительно экономит время потребителя. Данный продукт включает в себя:
1) Решение систем алгебраических линейных уравнений методом Гаусса
2) Нахождение обратной матрицы методом Гаусса
3) Вычисление определителя методом Гаусса.
Список использованных источников
1. Вержбицкий В.М. Основы численных методов [Текст]: учебное пособие для вузов/ В.М.Вержбицкий; под общ. ред. Л.В. Честной; Мн-во образования РФ, Удмурдский гос. Университет – М.:Высш.шк.,2002. – 840 с.:ил – ISBN 5-06-004020-8(в пер.).
2. Алексеев Е.Р. Турбо Паскаль 7.0 [Текст]: учебное пособие для вузов/ Алексеев Е.Р., Чеснокова О.В., Павлыш Н.Н., Славинская Л.В. – 2-е изд.- М.: НТ Пресс, 2006.- 272с.:ил – ISBN 5-477-00276-Х(в пер.).
3. Канатников А.Н., Крищенко А.П. Аналитическая геометрия [Текст]: Учеб. для вузов. 3-е изд./ Под ред. В.С.Зарубина, А.П.Крищенко. – М.: изд-во МГТУ им. Н.Э. Баумана, 2002. – 388 с.(сер. Математика в техническом университете; вып. 3) – ISBN 5-7038-1671-8 (вып. 3).
4. Шапрута В.В. Delphi 2005. Учимся программировать [Текст]: учебное пособие для вузов/ Шапрута В.В. - М.: НТ Пресс, 2005. – 352 с.: ил. – (самоучитель) - ISBN 5-477-00118-6.
5. Кострикин А.И. Введение в алгебру. Часть 1. основы алгебры: Учебник для вузов. – М.: Физико-математическая литература,2001. – 272 с. – ISBN 5-9221-0167-6.
ПРИЛОЖЕНИЕ А
Общая символьная схема алгоритма.
Символьная схема алгоритма решения СЛАУ методом Гаусса
Символьная схема алгоритма нахождения обратной матрицы с использованием метода Гаусса
Символьная схема алгоритма нахождения определителя матрицы с использованием метода Гаусса
Код программы
unit modul;
interface
type
massiv=array of real;
matrica=array of array of real;
procedure Gauss(a:matrica;b:massiv;n:
var x:massiv;var pr:byte);
function opredelitel(a:matrica; n:integer):real;
procedure obrmatrica (a:matrica; n:integer;
var h:matrica;var pr:byte);
implementation
procedure Gauss (a:matrica;b:massiv;n:integer;
var x:massiv;var pr:byte);
var i,j,k,r:integer;
max,m,c,s:real;
begin
{прямой ход метода Гаусса}
for i:=1 to n do
for j:=1 to n do
for k:=1 to n do
begin
max:=abs(a[k,k]); {пусть диагональный элемент - максимальный}
r:=k; {Номер строки, в которой он находится}
for i:=k+1 to n do
if abs(a[i,k])>max then
begin{Если в строке найдется элемент, превышающий }
max:=abs(a[i,k]); {максимум, сохранить его, а}
r:=i; {также номер строки, в которой он находится}
end;
for j:=1 to n do {Текущая строка меняется местами со}
begin {строкой содержащий максимальный элемент}
c:=a[k,j];
a[k,j]:=a[r,j];
a[r,j]:=c;
end;
{Приведение расширенной
c:=b[k];
b[k]:=b[r];
b[r]:=c;
for i:=k+1 to n do
begin
m:=a[i,k]/a[k,k];
for j:=k to n do
a[i,j]:=a[i,j]-m*a[k,j];
b[i]:=b[i]-m*b[k];
end;
end;
{Обратный ход метода Гаусса}
if a[n,n]=0 then{Если последний диагональный элемент равен нулю}
if b[n]=0 then{и последний свободный коэффициент равен нулю, то}
pr:=1{система не имеет решений, иначе , если последний}
else pr :=2{свободный коэффициент не нулевой, то система имеет}
else{бесконечное множество решений}
begin{Если последний диагональный элемент не нулевой}
pr:=0; {переходим к определению решений СЛАУ.}
SetLength(x,n);
x[n]:=b[n]/a[n,n];
for i:=n downto 1 do
begin
s:=0;
for j:=i+1 to n do
s:=s+a[i,j]*x[j];
x[i]:=(b[i]-s)/a[i,i];
end;
end;
function opredelitel (a:matrica; n:integer):real;
var i,j,k,r:integer;
max,m,c,det:real;
begin
det:=1;
for k:=1 to n do
begin
max:=abs(a[k,k]); {пусть диагональный элемент - максимальный}
r:=k; {Номер строки, в которой он находится}
for i:=k+1 to n do
if abs(a[i,k])>max then
begin{Если в строке найдется элемент, превышающий }
max:=abs(a[i,k]); {максимум, сохранить его, а}
r:=i; {также номер строки, в которой он находится}
end;
if r<>k then det:=-det;
for j:=1 to n do{Текущая строка меняется местами со}
begin {строкой содержащий максимальный элемент}
c:=a[k,j];
a[k,j]:=a[r,j];
a[r,j]:=c;
end;
{приведение расширенной
for i:=k+1 to n do
begin
m:=a[i,k]/a[k,k];
for j:=k to n do
a[i,j]:=a[i,j]-m*a[k,j];
end;
end;
for i:=1 to n do
det:=det*a[i,i];
opredelitel:=det;
end;
procedure obrmatrica (a:matrica; n:integer;
var h:matrica;var pr:byte);
var i,j:integer;
pr1:byte;
x,b:massiv;
begin
for i:=1 to n do
begin
for j:=1 to n do {формирование вектора свободных членов}
if i=j then
b[j]:=1
else b[j]:=0;
Gauss(a,b,n,x,pr1); {Решение СЛАУ методом Гаусса}
if pr1<>0 then
begin
pr:=1;
exit;
end
else begin
for j:=1 to n do {формирование обратной матрицы}
h[j,i]:=x[j];
pr:=0; end;
end;
end;
end.
Информация о работе Решение системы алгебраических линейных уравнений методом Гаусса