Рис. 3.6 Лист Excel в режиме отображения формул
Рис. 3.7 Проведение промежуточных расчетов
3.8 Проверка в MathCad
Рис.3.8 Проверка в MathCad
3.9 Анализ результатов
Сравнивая результаты работы программы с проверкой в табличном редакторе Excel и математическом пакете MathCad, можно удостовериться в правильности работы программы и выборе алгоритма ее работы.
4. Решение СЛАУ методом Гаусса
4.1 Теоретические сведения
Рассмотрим один из наиболее известных и широко применяемых прямых методов решения систем линейных уравнений. Обычно этот метод называют методом исключения или методом Гаусса.
Чтобы проиллюстрировать этот метод, рассмотрим сначала систему из трех уравнений с тремя неизвестными:
(4.1)
В такой системе по крайней мере один из коэффициентов ,,должен быть отличен от нуля, иначе бы мы имели бы дело в этих трех уравнениях только с двумя неизвестными. Если , то можно переставить уравнения так, чтобы коэффициент при в первом уравнении был отличен от нуля. Очевидно, что перестановка уравнений оставляет систему неизменной: ее решение остается прежним.
Теперь введем множитель .
Умножим первое уравнение системы (4.1) на и вычтем его из второго уравнения системы. («Первое» и «второе» уравнения берем уже после перестановки, если она была необходима). Результат вычитания равен:
Так как ,
фактически исключается из второго уравнения (именно для достижения такого результата и было выбрано значение ).
Определим теперь новые коэффициенты
Тогда второе уравнение системы приобретает вид
(4.2)
Заменим второе из первоначальных уравнений уравнением (4.2) и введем множитель для третьего уравнения
.
Умножим первое уравнение на этот множитель и вычтем его из третьего. Коэффициент при снова становится нулевым, и третье уравнение приобретает вид
(4.3)
где
Если теперь в исходной системе уравнений (4.1) заменить третье уравнение на (4.3), то новая система выглядит так:
(4.4)
Эти новые уравнения полностью эквивалентны исходным уравнениям с тем преимуществом, что входит только в первое уравнение и не входит ни во второе, ни в третье. Таким образом, два последних уравнения представляют собой систему из двух уравнений с двумя неизвестными; если теперь найти решение этой системы, т.е. определить и , то результат можно подставить в первое уравнение и найти . Иначе говоря, задача сведена к решению системы из двух уравнений с двумя неизвестными.
Попытаемся теперь исключить из двух последних уравнений. Если, то снова мы переставим уравнения так, чтобы было отлично от нуля (если и , то система вырождена и либо вовсе не имеет решения, либо имеет бесчисленное множество решений).
Введем новый множитель
Умножим второе уравнение полученной системы (4.4) на и вычтем его из третьего. Результат вычитания равен
В силу выбора
Полагая, что
окончательно получим
(4.5)
Третье уравнение полученной системы (4.4) можно заменить уравнением (4.5), после чего система уравнений приобретает следующий вид:
(4.6)
Такая система уравнений (4.6) иногда называется треугольной из-за своего внешнего вида.
Для решения необходимо определить из третьего уравнения системы (4.6), подставить этот результат во второе уравнение и определить. Полученные значения и подставить в первое уравнение и определить. Этот процесс, который обычно называется обратной подстановкой (обратный ход), определяется формулами:
(4.7)
Необходимо отметить, если , то система уравнений вырождена.
Теперь можно обобщить этот метод на случай системы из n - уравнений с n-неизвестными. Ниже записана система уравнений, приведенная к треугольному виду (4.8).
(4.8)
Формулы для вычисления неизвестных (обратный ход) будут иметь вид:
(4.9)
4.2 Постановка задачи
Решение системы линейных алгебраических уравнений методом Гаусса.
4.3 Исходные данные
4.4 Блок-схема алгоритма
Блок-схема процедуры «Gaus»:
Рис. 4.2 Блок-схема процедуры «Gaus»
4.5 Текст программы
Файл исходных данных
1 -1 1 -3
2 18 0 5
1 5 2 6
0 1 1 2
15 83 18 8
Program Zadacha6;
Uses CRT;
Type matrix=array [1..10,1..10] of real;
vector=array [1..10] of real;
Var
i,j:integer;
a:matrix;
x,b:vector;
t1,t:text;
Procedure Gaus (Var a:matrix; Var b:vector; x:vector);
Var k,i,j,q:integer;
d:real;
t:text;
Begin
For i:=1 to 4 do
a[i,5]:=B[i];
Assign(t,'reshenie.txt');
Rewrite(t);
Writeln('Reshenie sistemy lineinygh algebraicheskigh uravneniy');
Writeln('(kolichestvo uravneniy 4)');
Writeln('Sistema uravneniy:');
Writeln(t,'Reshenie sistemy lineinygh algebraicheskigh uravneniy');
Writeln(t,'(kolichestvo uravneniy 4)');
Writeln(t,'Sistema uravneniy:');
For j:=1 to 4 do
Write(t,a[i,j]:6:1,'x[',j,'] ');
Writeln(t,b[i]:6:1);
End;
Write(a[i,j]:6:1,'x[',j,'] ');
Writeln(b[i]:6:1);
For i:=1 to 4 do Begin
d:=a[i,i];{Поиск максимума в столбце}
q:=i;
For j:=i to 4 do
If abs(a[j,i])>abs(d) then
D:=a[j,i];
q:=j;
{Обмен строк}
If i<>q Then
For j:=i to 5 do
D:=a[i,j];
a[i,j]:=a[q,j];
a[q,j]:=d;
{Создание строки}
For j:=5 downto i do
a[i,j]:=a[i,j]/a[i,i];
{зануление столбцов, вычисление А}
For k:=i+1 to 4 do
a[k,j]:=a[k,j]-a[i,j]*a[k,i];
End;{Обратный ход}
x[4]:=a[4,5];
For i:=4-1 downto 1 do begin
D:=0;
For j:=4 downto i+1 do
d:=d+a[i,j]*x[j];
x[i]:=a[i,5]-d;
end;
Writeln(t,'Vector X:');
Writeln('Vector X:');
Write(t, x[i]:5:3,' ');
Writeln(t);
close(t);
Write(x[i]:5:3,' ');
Writeln;
Clrscr;
assign(t1,'clay.txt');
reset(t1);
Read(t1,a[i,j]);
For i:=1 to 4 do read(t1,b[i]);
Gaus(a,b,x);
Readkey;
End.
4.6 Результаты работы программы
Рис.4.3 Результат работы программы
Reshenie sistemy lineinygh algebraicheskigh uravneniy
(kolichestvo uravneniy 4)
Sistema uravneniy:
1.0x[1] -1.0x[2] 1.0x[3] -3.0x[4] 15.0
2.0x[1] 18.0x[2] 0.0x[3] 5.0x[4] 83.0
1.0x[1] 5.0x[2] 2.0x[3] 6.0x[4] 18.0
0.0x[1] 1.0x[2] 1.0x[3] 2.0x[4] 8.0
Вектор Х:
-7.671 7.063 12.456 -5.759
4.7 Проверка в MS Excel
Рис.4.4 Проверка в MS Excel
Рис.4.5 Лист Excel в режиме отображения формул
4.8 Проверка в MathCad
Рис.4.6 Проверка методом Гаусса
Рис.4.7 Проверка методом Крамера
Рис.4.8 Проверка методом приведения матрицы к треугольному виду
Рис.4.9 Проверка с использованием обратной матрицы
4.9 Анализ результатов
На рис. 4.5 - 4.10 Выполнена проверка решения системы линейных алгебраических уравнений разными методами. Сравнивая полученные результаты с результатами работы программы и ее проверки в табличном редакторе MS Excel, можно сделать вывод о правильности работы программы и правильности выбора алгоритма решения поставленной задачи.
Заключение
В ходе выполнения курсовой работы было выполнено четыре задания: три типовые геодезические задачи («Обратная геодезическая задача», «Прямая угловая засечка», «Обратная геодезическая засечка»), и одна математическая задача «Решение системы линейных алгебраических уравнений методом Гаусса». Поставленные задачи решались с помощью языка программирования Turbo Pascal с последующей проверкой в математическом пакете MathCad 14.0 и табличном процессоре MS Excel 2007. Судя по полученным результатам и их проверки можно удостовериться в правильности работы предложенных программ.
Библиографический список
1. Информатика: Программа и методические указания по выполнению курсовой работы для студентов специальности "Маркшейдерское дело" дневной формы обучения / Санкт-Петербургский горный ин-т. Сост.: А.П. Кондрашов, Т.Р. Косовцева, В.В. Петров, - СПб, 2004 . 51 с.
2. Информатика. Учебник. Под редакцией Н.В. Макаровой. М., 2001.
3. Правила оформления курсовых и квалификационных работ / Санкт-Петербургский горный ин-т. Сост. И.О. Онушкина, П.Г. Талалай, - СПб, 2004, 50 стр.
4. Информатика. Работа в пакете MathCad. / СПГГИ(ТУ), Сост. О.Г. Быкова, СПб, 2005, 46 стр.
5. Ян Белицкий Turbo Pascal с графикой для персональных компьютеров. М.:1991г.
Страницы: 1, 2, 3, 4, 5, 6