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

Решение системы линейных уравнений с матричными элементами и свободными членами с использованием метода Гаусса с выбором главного элемента, основанного на приведении матрицы системы к треугольному виду с помощью нахождения элементов главной диагонали.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 10.12.2014
Размер файла 71,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

МИНОБРНАУКИ РФ

Федеральное государственное бюджетное образовательное

учреждение высшего профессионального образования

Тульский Государственный Университет

Численные методы

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

«РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ МЕТОДОМ ГАУССА»

Выполнил студент группы 520111: Курилов В.Р.

Тула 2013

Цель работы

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

Теоретические сведения

Метод Гаусса для произвольной системы линейных алгебраических уравнений

основан на приведении матрицы системы к треугольной. Вычтем из второго уравнения системы (1) первое, умноженное на такое число, чтобы уничтожился коэффициент при . Затем таким же образом вычтем первое уравнение из третьего, четвертого и т.д. Тогда исключатся все коэффициенты первого столбца, лежащие ниже главной диагонали. Затем при помощи второго уравнения исключим из третьего, четвертого и т.д. уравнений коэффициенты второго столбца. Последовательно продолжая этот процесс, исключим из матрицы все коэффициенты, лежащие ниже главной диагонали.

Запишем общие формулы процесса. Пусть проведено исключение коэффициентов из столбца. Тогда остались такие уравнения с ненулевыми коэффициентами ниже главной диагонали:

Умножим -ю строку на число

и вычтем из -той строки. Первый элемент этой строки обратится в нуль, а остальные изменятся по формулам

Производя вычисления по этим формулам при всех указанных индексах, исключим элементы -го столбца. Будем называть такое исключение циклом процесса. Выполнение всех циклов называется прямым ходом исключения.

После выполнения прямого хода получим треугольную систему

с матрицей

Треугольная система (5) легко решается обратным ходом по формулам

Замечания:

1. Исключение по формулам (3)-(4) нельзя проводить, если в ходе расчета на главной диагонали оказался нулевой элемент . Тогда в промежуточной системе (2) перестановкой строк необходимо переместить ненулевой элемент на главную диагональ и продолжить расчет.

2. Если элемент на главной диагонали мал, то эта строка умножается на большие числа , что приводит к значительным ошибкам при вычитаниях. Чтобы избежать этого, каждый цикл всегда начинают с перестановки строк. Среди элементов столбца , , находят главный, т.е. наибольший по модулю в -том столбце, и перестановкой строк переводят его на главную диагональ, после чего выполняют исключения. В методе Гаусса с выбором главного элемента погрешность округления обычно невелика. Только для плохо обусловленных систем () устойчивость этого метода оказывается недостаточной.

3. Для контроля расчета полезно найти невязки:

Если они велики, то это означает грубую ошибку в расчете. Если они малы, а система хорошо обусловлена, то решение найдено достаточно точно. Для плохо обусловленных систем малость невязок не гарантирует хорошей точности решения.

Задание

Найти решение системы линейных уравнений с матричными элементами

гаусс уравнение матрица

и свободными членами

где - номер фамилии студента в журнале группы; - последняя цифра номера группы.

Допустимая погрешность . При решении системы использовать метод Гаусса с выбором главного элемента.

Алгоритм решения:

1) Построение матрицы с элементами, которые вычисляются по формулам в задании.

2) Подготовка матрицы к треугольному виду с помощью нахождения элементов главной диагонали.

3) Вычисление коэффициентов, на которые необходимо помножить строки для вычитания строк.

4) Обнуление элементов лежащих ниже главной диагонали и приведение к треугольному виду.

5) Нахождение решения с помощью формул обратного хода.

Текст программы: Delphi 7 program laba1var10;

{$APPTYPE CONSOLE}

uses

SysUtils;

var

q,i,j,l,h:integer;

w,k,r:real;

a:array [1..5,1..6] of real;

x:array[1..5] of real;

b:array [1..5,1..6] of real;

begin

for i:=1 to 5 do begin

for j:=1 to 5 do begin

if (i<j) then a[j,i]:=i+j-(10/3)-1;

if (i=j) then a[j,i]:=i+j+(10/4)+1; //матрица линейного уравнения

if (i>j) then a[j,i]:=i+j-(10/5)-1;

end;

end;

j:=6;

for i:=1 to 5 do //столбец свободных членов

a[i,j]:=3*i+(10/2)+1;

for i:=1 to 5 do begin

for j:=1 to 6 do begin

write(a[i,j]:12:5,' ');

end;

writeln; //вывод системы уравнений

end;

for j:=1 to 4 do begin //сортировка

for i:=j to 4 do begin

for l:=i to 4 do begin

if (abs(a[i,j])<abs(a[l+1,j])) then begin

for q:=1 to 6 do begin

w:=a[i,q];

a[i,q]:=a[l+1,q];

a[l+1,q]:=w;

end;

end;

end;

end;

end;

for j:=1 to 4 do begin //приведение системы к диагональному виду

for i:=1 to 4 do begin

if (i>=j) then begin

if (a[i+1,j]<>0) then //если значение элемента не нулевое

begin k:=a[j,j]/a[i+1,j]; //вычисляем коэффициент на который необходимо умножить всю строку

for q:=1 to 6 do a[i+1,q]:=k*a[i+1,q]-a[j,q]; //вычитаем строки

end;

end;

end;

end;

for i:=1 to 5 do begin //обнуление нижнего треугольника

for j:=1 to 4 do

if (j<i) then a[i,j]:=0;

end;

for i:=1 to 5 do begin

for j:=1 to 6 do

write(a[i,j]:12:5,' ');

writeln;

end;

for i:=1 to 5 do

b[i,6]:=a[i,6]; //заполнение системы для вычисления X

for i:=5 downto 1 do begin //вычисление X

for j:=1 to 5 do

if j>i then b[i,6]:=b[i,6]-x[j]*a[i,j];

x[i]:=(b[i,6])/(a[i,i]);

end;

for i:=1 to 5 do //вывод на экран

writeln('x',i,':=',x[i]:12:5);

for i:=1 to 5 do begin

for j:=1 to 5 do begin

if i<j then a[j,i]:=i+j-(10/3)-1;

if i=j then a[j,i]:=i+j+(10/4)+1;

if i>j then a[j,i]:=i+j-(10/5)-1;

end;

end;

for i:=1 to 5 do begin

a[i,6]:=a[i,1]*x[1]+a[i,2]*x[2]+a[i,3]*x[3]+a[i,4]*x[4]+a[i,5]*x[5];

end;

writeln;

for i:=1 to 5 do

writeln('b',i,':=',a[i,6]:12:5);

readln;

end.

Работа программы:

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.