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

Преобразование матрицы системы линейных алгебраических уравнений (СЛАУ) с помощью алгоритма Гаусса. Решение задачи методом простой итерации. Создание блок-схемы и текста программы для решения СЛАУ, реализованной на языке программирования Turbo Pascal.

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

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

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

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

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

ФГОУ СПО «Уфимский авиационный техникум»

Курсовая работа

по дисциплине «Численные методы»

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

Студент В.Р. Хизбуллина

Руководитель работы

Э.Р. Ахматсафина

Содержание

Введение

1. Теоретическая часть

1.1 Метод Гаусса

1.2 Метод простой итерации

2. Постановка и решение задачи

2.1 Формулировка задачи

2.2 Решение задачи методом Гаусса

2.3 Решение задачи методом простой итерации

3. Программная реализация

3.1 Блок-схема

3.2 Текст программы

3.3 Тестовый пример

3.4 Решение задачи с помощью ЭВМ

Заключение

Список литературы

Введение

Все используемые на практике методы решения систем линейных алгебраических уравнений можно разделить на две большие группы: точные методы и итерационные методы.

Под точным методом решения понимается метод, позволяющий теоретически получить точное значение всех неизвестных в результате конечного числа арифметических операций (метод Гаусса).

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

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

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

Цель курсовой работы - освоить решение систем линейных алгебраических уравнений методом простой итерации.

Курсовой проект состоит из трех частей: первая - теоретическая, в ней описана теория по методу простой итерации. Вторая часть (практическая) содержит решение системы методами Гаусса и простой итерации. В третьей части представлен алгоритм решения задачи методом простой итерации, программная реализация метода.

1. Теоретическая часть

1.1 Метод Гаусса

В разделе « Численные методы линейной алгебры» рассматриваются численные методы решения систем линейных алгебраических уравнений (СЛАУ) и численные методы решения задач на собственные значения и собственные векторы матриц.

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

Из прямых методов решения СЛАУ рассмотрим методы Гаусса и простых итераций.

В методе Гаусса матрица СЛАУ с помощью равносильных преобразований преобразуется в верхнюю треугольную матрицу, получающуюся в результате прямого хода. В обратном ходе определяются неизвестные.

Пусть дана СЛАУ

(1)

Запишем расширенную матрицу системы:

На первом шаге алгоритма Гаусса выберем диагональный элемент (если он равен 0, то первую строку переставляем с какой-либо нижележащей строкой) и объявляем его ведущим, а соответствующую строку и столбец, на пересечении которых он стоит - ведущими. Обнулим элементы . ведущего столбца. Для этого сформируем числа . Умножая ведущую строку на число складывая со второй и ставя результат на место второй строки, получим вместо элемента нуль, а вместо элементов - соответственно элементы и т.д.

Умножая ведущую строку на число, складывая с n-ой строкой и ставя результат на место n- ой строки, получим вместо элемента нуль, а остальные элементы этой строки будут иметь вид:

Сохраняя ведущую строку неизменной, получим в результате 1-го шага алгоритма Гаусса следующую матрицу:

На втором шаге алгоритма Гаусса в качестве ведущего элемента выбирается элемент (если он равен нулю, то вторую строку взаимно меняем на нижележащую строку). Формируются числа которые ставятся около ведущей строки. Умножая ведущую строку на число и складывая результат с третьей строкой, получим вместо элемента нуль, а вместо элементов элементы И так далее.

Умножая ведущую строку на число складывая результат с n-ой строкой и ставя полученную сумму на место n-ой строки, получим вместо элемента нуль, а вместо элементов, элементы Сохраняя 1-ую и 2-ую строки матрицы неизменными, получим в результате второго шага алгоритма Гаусса следующую матрицу:

После (n-1)-го шага алгоритма Гаусса получаем следующую расширенную матрицу содержащую верхнюю треугольную матрицу СЛАУ

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

В обратном ходе алгоритма Гаусса из последнего уравнения сразу определяется , из предпоследнего - и т.д. Из первого уравнения определяется

1.2 Метод простой итерации

При большем числе неизвестных линейная система (ЛС впоследствии) схема метода Гаусса, дающая точное приближение, становиться весьма сложной.

В этих условиях для нахождения корней системы иногда удобнее использовать приближенные методы вычисления. Изложим здесь один из этих методов - метод итераций.

При большом числе уравнений прямые методы решения СЛАУ (за исключением метода прогонки) становятся труднореализуемыми на ЭВМ прежде всего из-за сложности хранения и обработки матриц большой размерности. В то же время характерной особенностью ряда часто встречающихся в прикладных задачах СЛАУ является разреженность матриц. Число ненулевых элементов таких матриц мало по сравнению с их размерностью. Для решения СЛАУ с разреженными матрицами предпочтительнее использовать итерационные методы.

Методы последовательных приближений, в которых при вычислении

последующего приближения решения используются предыдущие, уже известные приближенные решения, называются итерационными.

Рассмотрим СЛАУ (1) с невырожденной матрицей (det A?0). Приведем СЛАУ к эквивалентному виду

(2)

Такое приведение может быть выполнено различными способами. Одним из наиболее распространенных является следующий:

Разрешим систему (1) относительно неизвестных при ненулевых диагональных элементах, aii ?0,i=1,n (если какой-либо коэффициент на главной диагонали равен нулю, достаточно соответствующее уравнение поменять местами с любым другим уравнением). Получим следующие выражения для компонентов: вектора и матрицы эквивалентной системы:

(3)

При таком способе приведения исходной СЛАУ к эквивалентному виду метод простых итераций носит название метода Якоби. В качестве нулевого приближения вектора неизвестных примем вектор правых частейили

Тогда метод простых итераций примет вид:

(4)

Из (4) видно преимущество итерационных методов по сравнению, например, с рассмотренным выше методом Гаусса. В вычислительном процессе участвуют только произведения матрицы на вектор, что позволяет работать только с ненулевыми элементами матрицы, значительно упрощая процесс хранения и обработки матриц. Имеет место следующее достаточное условие сходимости метода простых итераций [ 1 ]. Метод простых итераций (4) сходится к единственному решению СЛАУ (2) (а следовательно и к решению исходной СЛАУ (1)) при любом начальном приближении , если какая-либо норма матрицы эквивалентной системы меньше единицы. . Если используется метод Якоби (выражения (3) для эквивалентной СЛАУ), то достаточным условием сходимости

является диагональное преобладание матрицы A, т.е. (для каждой строки матрицы A модули элементов, стоящих на главной диагонали, больше суммы модулей недиагональных элементов). Очевидно, что в этом случае меньше единицы и, следовательно, итерационный процесс (4) сходится. Приведем также необходимое и достаточное условие сходимости метода простых итераций. Для сходимости итерационного процесса необходимо и достаточно, чтобы спектр матрицы эквивалентной системы лежал внутри круга с радиусом, равным единице.

При выполнении достаточного условия сходимости оценка погрешности решения на k - ой итерации дается выражением:

(5)

Где x* - точное решение СЛАУ. *

Процесс итераций останавливается при выполнении условия, где задаваемая вычислителем точность.Принимая во внимание, что из (5) следует неравенство

можно получить априорную оценку необходимого для достижения заданной точности числа итераций. При использовании в качестве начального приближения вектора такая оценка определится неравенством: откуда получаем априорную оценку числа итераций k при

Следует подчеркнуть, что это неравенство дает завышенное число итераций , поэтому редко используется на практике.

Замечание. Поскольку является только достаточным (не необходимым) условием сходимости метода простых итераций, то итерационный процесс может сходиться и в случае, если оно не выполнено. Тогда критерием окончания итераций может служить неравенство

.

2. Постановка и решение задачи

2.1 Формулировка задачи

Решение систем линейных алгебраических уравнений методом простой итерации (на примере системы с точностью )

2.2 Решение задачи методом Гаусса

Z=0,48

4, 08y - 10, 88z = 2, 38

4,08y-5,11=2,38

4,08y=7,49

y=1,83

0,1x-0,04y-0,63z=-0,15

0,1x-0,04*1,83-0,63*0,48=-0,15

0,1x-0,07-0,3=-0,15

0,1x=0,22

x=2,2

Проверка:

0,1*2,2 - 0, 04*1, 83 - 0, 63*0, 48 = -0, 15

0, 22 - 0, 07 - 0, 3 = -0, 15

0, 22 - 0, 37 = -0, 15

-0, 15 = -0, 15

2.3 Решение задачи методом простой итерации

алгебраический уравнение гаусс итерация

Рассмотрим систему:

;

;

;

;

;

неверно

неверно

неверно

неверно

неверно

неверно

верно

3. Программная реализация

3.1 Блок-схема

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

3.2 Текст программы

A - массив в который записывается система

B - массив в который записывается система приведенная к виду

С - массив В умноженный на начальное приближение

L - массив В с обнуленной главной диагональю

S - все суммы

H - массив б1 б2 б3

q - б

E - точность

X - массив значений Х

Program p1; uses crt;

const n=10;

var A,B,C,l:array[1..n,1..n] of real;

s,q,max,E,w,z:real;

D,F,g,h,x:array[1..n] of real;

m,o,i,j: integer;

x1,x2,x3,x11,x12,x13,max1,max2,max3:real;

Begin clrscr;

writeln('Vvedite chislo peremennih');

readln(m);

writeln('Vvedite chislo uravneniy');

readln(o);

o:=o+1;

writeln('Vvedite e->');

readln(w);

a[1,1]:=0.1; a[1,2]:=-0.04; a[1,3]:=-0.63; a[1,4]:=-0.15;

a[2,1]:=-0.04; a[2,2]:=0.34; a[2,3]:=0.05; a[2,4]:=0.31;

a[3,1]:=-0.43; a[3,2]:=0.05; a[3,3]:=0.13; a[3,4]:=0.37;

writeln('privedenie k vidu');

For j:=1 to o do Begin

B[1,j]:=-(A[3,j]/a[3,1]);

B[2,j]:=-(A[2,j]/a[2,2]);

B[3,j]:=-(A[1,j]/a[1,3]);

end;

writeln;

For i:=1 to m do Begin

For j:=1 to o do

If j=o then B[i,j]:=-(B[i,j]);end;

For i:=1 to m do begin

For j:=1 to o do

write(' ',B[i,j]:3:3);

writeln; end;

writeln ;

writeln('x1=',b[1,2]:3:3,'x2+',b[1,3]:3:3,'x3+',b[1,o]:3:3);

writeln('x2=',b[2,1]:3:3,'x1+',b[2,3]:3:3,'x3+',b[2,o]:3:3);

writeln('x3=',b[3,1]:3:3,'x1+',b[3,2]:3:3,'x2+',b[3,o]:3:3);

writeln;

For i:=1 to n do begin

For j:=1 to o-1 do

If I<>j then

L[i,j]:=b[i,j];

end;

For i:=1 to m do begin

For j:=1 to o-1 do

write(' ',L[i,j]:3:3); writeln; end;

writeln('Nachalnoe priblijenie');

For i:=1 to m do Begin

F[i]:=B[i,o]; writeln(' ',F[i]:3:3); end;

max1:=g[1];

For I:=1 to m do Begin S:=0;

For J:=1 to o-1 do

g[i]:=g[i]+abs(L[i,j]);

writeln('alpha=',g[i]:3:3);

If max1<g[i] then max1:=g[i]; end;

writeln('max1=',max1:3:3);

max2:=h[1];

For j:=1 to o-1 do Begin S:=0;

For i:=1 to m do

s:=s+abs(L[i,j]);

g[i]:=S;

writeln('alphaS=',g[i]:3:3);

If max2<g[i] then max2:=g[i]; end;

writeln('max2=',max2:3:3);

S:=0;

For I:=1 to m do Begin

For J:=1 to o-1 do

S:=S+sqr(L[i,j]); end;

S:=sqrt(S);

writeln('max3=',S:3:3);

h[1]:=max1;

h[2]:=max2;

h[3]:=S;

for I:=m downto 1 do

if h[i]<1 then q:=h[i];

writeln('q=',q:3:3);

writeln; z:=((w*(1-q))/q);

writeln('z=',z:3:3);

l[1,1]:=b[1,4];

L[2,2]:=b[2,4];

L[3,3]:=b[3,4];

For i:=1 to m do begin

For j:=1 to o-1 do

write(' ',L[i,j]:3:3); writeln; end;

repeat

writeln;

writeln('iteraciya');

For I:=1 to m do

x[i]:=0;

For I:=1 to m do

For j:=1 to o-1 do

If i<>j then

c[i,j]:=L[i,j]*f[j] else c[i,j]:=l[i,j];

For i:=1 to m do begin

For j:=1 to o-1 do

write(' ',c[i,j]:3:3); writeln; end;

For I:=1 to m do

For j:=1 to o-1 do

x[i]:=x[i]+(c[i,j]);

For i:=1 to m do

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

For i:=1 to m do Begin

D[i]:=abs(f[i]-x[i]);

writeln(D[i]:3:3); end;

writeln;

max:=d[1];

For i:=1 to m do Begin

If max<D[i] then max:=D[i]; end;

For i:=1 to m do Begin

F[i]:=x[i]; writeln('novoe=',F[i]:3:3); end;

writeln('max=',max:3:3); until max<z;

end.

3.3 Тестовый пример

В качестве тестового примера возьмем систему ее решение можно найти аналитически, оно имеет вид

Результат работы программы на тестовом примере приведен на рисунке 1

Рисунок 1. Тестовый пример

3.4 Решение задачи с помощью ЭВМ

Результат решения данной системы приведен на рисунке 2.

Рисунок 2 Решение системы

Заключение

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

Список литературы

1. Бахвалов Н., Жидков Н., Кобельков Г. Численные методы. М.: Лаборатория базовых знаний, 2001. 632 с.

2. Вержбицкий В.М., Численные методы. Линейная алгебра и нелинейные уравнения. М.: Высшая школа, 2000. 266 с.

3. Вержбицкий В.М., Основы численных методов. М.: Высшая школа, 2002. 840 с.

4. Пирумов У.Г. Численные методы. М.: Дрофа, 2003. 224 с.

5. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. - М.: Нолидж, 1997. - 616 с.

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


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

  • Сферы использования компьютеров, сущность и языки программирования. Применение модифицированного метода Гаусса и расширенной матрицы для решения системы линейных алгебраических уравнений (СЛАУ). Разработка программы, системные требования для ее работы.

    курсовая работа [657,1 K], добавлен 09.01.2014

  • Рассмотрение двух способов решения систем линейных алгебраических уравнений: точечные и приближенные. Использование при программировании метода Гаусса с выбором главного элемента в матрице и принципа Зейделя. Применение простой итерации решения уравнения.

    курсовая работа [879,8 K], добавлен 05.06.2012

  • Изучение систем линейных алгебраических уравнений (СЛАУ) с использованием табличного процессора MS Excel 2007. Пример решения системы линейных алгебраических уравнений методом Крамера. Прикладное программное обеспечение, применяемое для решения СЛАУ.

    курсовая работа [184,5 K], добавлен 20.11.2013

  • Сущность матричного метода. Разработка программы решения системы уравнений линейных алгебраических уравнений методом решения через обратную матрицу на языке программирования Delphi. Представление блок-схемы и графического интерфейса программного продукта.

    курсовая работа [1,0 M], добавлен 27.09.2014

  • Системы линейных алгебраических уравнений. Код программы для решения систем линейных алгебраических уравнений. Математические и алгоритмические основы решения задачи методом Гаусса. Программная реализация решения. Алгоритмы запоминания коэффициентов.

    лабораторная работа [23,5 K], добавлен 23.09.2014

  • Применение итерационных методов численного решения системы линейных алгебраических уравнений при вычислении на ЭВМ. Математические и алгоритмические основы решения задачи, метод Гаусса. Функциональные модели и блок-схемы, программная реализация решения.

    курсовая работа [527,5 K], добавлен 25.01.2010

  • Приведение системы линейных алгебраических уравнений к треугольному виду прямым ходом метода Гаусса. Применение обратного хода метода вращений. Создание алгоритма, блок-схемы и кода программы. Тестовый пример решения уравнения и его проверка в MathCad.

    лабораторная работа [164,3 K], добавлен 02.10.2013

  • Итерационные методы решения нелинейных уравнений, системы линейных алгебраических уравнений (СЛАУ). Решение нелинейных уравнений методом интерполирования. Программная реализация итерационных методов решения СЛАУ. Практическое применение метода Эйлера.

    курсовая работа [1,6 M], добавлен 20.01.2010

  • Решение систем алгебраических линейных уравнений методом Крамера. Сущность метода прогонки. Программная реализация метода: блок-схема алгоритма, листинг программы. Проверка применимости данного способа решения для конкретной системы линейных уравнений.

    курсовая работа [581,0 K], добавлен 15.06.2013

  • Алгоритм решения систем линейных уравнений методом Гаусса, его этапы. Система уравнений для определения коэффициентов сплайна, представляющая собой частный случай систем линейных алгебраических уравнений. Программная реализация, тестовый пример.

    курсовая работа [431,8 K], добавлен 15.06.2013

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