Методы решения СЛАУ. Метод Гаусса

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ

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

Факультет   Кафедра    
 
 

Дата регистрации работы в деканате    Дата регистрации работы на кафедре    Отметка о допуске к защите

Оценка за защиту 

        КУРСОВАЯ РАБОТА (КУРСОВОЙ ПРОЕКТ) 
         

по дисциплине   

Тема: «  » 
 

                Исполнитель: 

                  студент (факультет, курс, группа) 
                   

                  фамилия, имя, отчество 
                   
                   
                   

                Руководитель: 

                ученое  звание,  ученая  степень,  должность, 
                 

                  фамилия, имя, отчество 
                   
                   
                   
                   
                   
                   
                   
                   
                   

    Барановичи 2011 год

 

     

Р Е Ф Е Р А Т 

Курсовая работа : 27с., 2 рис., 6 источников. 
 

КАЧЕСТВО, УПРАВЛЕНИЕ КАЧЕСТВОМ, СТАНДАРТЫ ИСО 9000,

ЗАТРАТЫ НА КАЧЕСТВО, КОНТРОЛЬ КАЧЕСТВА.

Объектом и предметом исследования является система линейных уравнений и её решение методом Гаусса.

 Цель работы: составить алгоритм решения СЛАУ методом Гаусса и реализовать его методами среды программирования Delphi.

 При выполнении работы использованы методы анализа, моделирования, прогнозирования, эксперимента.

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

Областью возможного практического применения являются математические численные вычисления.

 Технико – экономическая и социальная значимость – алгоритм и его программная реализация позволяет снизить временные затраты на проведение сложных вычислений.

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

                    (подпись студента)

 

     

     Содержание

       
 

    Введение                                                                                                                       4

  1. Постановка задачи                                                                                                7
    1. Условие задачи                                                                                                     7
    2. Алгоритм решения системы линейных уравнений методом Гаусса             7
  2. Анализ существующих методов решения задачи                                              9
    1. Метод Гаусса (схема единственного деления)                                                   10
    2. Метод Гаусса с выбором главного элемента                                                    13
    3. Метод оптимального исключения                                                                     14
    4. Сравнение прямых и итерационных методов                                                   16
  3. Описание алгоритма                                                                                            18
  4. Блок-схемы алгоритма                                                                                        19
  5. Листинг программы                                                                                             22
  6. Выполнение программы                                                                                     26

    Список  использованной литературы                                                                         27 
    Введение

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

           Одна из трудностей практического решения систем большой размерности связанна с ограниченностью оперативной памяти ЭВМ. Хотя объем оперативной памяти вновь создаваемых вычислительных машин растет очень быстро, тем не менее, еще быстрее возрастают потребности практики в решении задач все большей размерности. В значительной степени ограничения на размерность решаемых систем можно снять, если использовать для хранения матрицы внешние запоминающие устройства. Однако в этом случае многократно возрастают как затраты машинного времени, так и сложность соответствующих алгоритмов. Поэтому при создании вычислительных алгоритмов линейной алгебры большое внимание уделяют способам компактного размещения элементов матриц в памяти ЭВМ.

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

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

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

     Применяемые на практике численные методы решения  СЛАУ делятся на две группы - прямые и итерационные.

     В прямых (или точных) методах решение системы получают за конечное число арифметических действий. К ним относятся известное правило Крамера нахождения решения с помощью определителей, метод последовательного исключения неизвестных (метод Гаусса) и его модификации, метод прогонки и другие. Сопоставление различных прямых методов проводится обычно по числу арифметический действий, необходимых для получения решения. Прямые методы являются универсальными и применяются для решения систем до порядка 103. Отметим, что вследствие погрешностей округления при решении задач на ЭВМ прямые методы на самом деле не приводят к точному решению системы.

     Итерационные  (или приближенные) методы являются бесконечными и находят решение системы как предел при k®¥ последовательных приближений x(k), где k - номер итерации. Обычно задается точность e, и вычисления проводятся до тех пор, пока не будет выполнена оценка ºx(k) – x(k-1) º< e. Число итераций n(e), которое необходимо провести для получения заданной точности, для многих методов можно найти из теоретических рассмотрений. Качество различных итерационных методов можно сравнивать по необходимому числу итераций n(e). Эти методы особенно предпочтительны для систем с матрицами специального вида - симметричными, трехдиагональными, ленточными и большими разреженными матрицами.

     Выбор среды программирования.

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

 

  1. Постановка  задачи.
    1. Условие задачи

Решить систему линейных уравнений  методом Гаусса

  20.9   1.2  2.1   0.9                       21.7

  1.2     21.2  1.5     2.5                       27.46

  2.1      1.5  19.8    1.3                       28.76

    1.      2.5    1.3   32.12                     49.72    
 
    1. Алгоритм  решения системы  линейных уравнений методом Гаусса
  1. В одном цикле реализуются операции:

    ;      ;                                                 (1.1)

    при этом , где N – размерность матрицы (количество уравнений в системе).

  1. Вычисляется первый элемент вспомогательного вектора y:

                                                                                             (1.2)

  1. Открывается цикл для , внутри которого производятся следующие вычисления:
    • открывается цикл для , внутри которого вычисляется , причем для вычисления суммы создается вложенный цикл для и вводится вспомогательная переменная для временного хранения просуммированных данных (после каждого повторения цикла для эта переменная должна обнуляться).
    • открывается цикл для , внутри которого вычисляется                                                              (1.3)
    • , причем для вычисления суммы создается вложенный цикл для и вводится вспомогательная переменная для временного хранения просуммированных данных (эта переменная может быть той же, что и в предыдущем подпункте, но она должна быть предварительно обнулена и далее обнуляться после каждого повторения цикла для ).
  2. В цикле для произвести вычисления остальных элементов вспомогательного вектора y по формуле:

                                                                         (1.4)

     Вычисление  суммы производится также, как  и в предыдущих пунктах (во  вложенном цикле для  )

  1. Вычисляется .
  2. Получим вектор искомых решений в цикле по формуле                                                                (1.5)

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

 

  2. Анализ существующих методов решения задачи 

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

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

                                                       (2.1) 

  где x1, x2,..., xn - неизвестные величины, b1, b2,..., bn - элементы правой части. Если определитель системы отличен от нуля, то она имеет единственное решение. Для удобства дальнейших преобразований обозначим элементы правой части аi(n+1) и запишем расширенную матрицу размерами n´(n+1), которая содержит всю информацию о системе:  

  A =                                                  (2.2) 

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

  Приведем  формальное описание схем некоторых прямых методов.

    1. Метод Гаусса (схема единственного деления). Алгоритм метода состоит из двух этапов. Первый этап называется прямым ходом метода и заключается в последовательном исключении неизвестных из уравнений, т.е. в приведении матрицы А к верхнему треугольному виду (ниже главной диагонали все нули). Для этого на первом шаге разделим первое уравнение системы на а11 (предположим, что коэффициент а11 ¹ 0, в противном случае осуществляем перестановку уравнений системы). Обозначим коэффициенты полученного приведенного уравнения , домножим его на коэффициент а21 и вычтем из второго уравнения системы, исключая тем самым х1 из второго уравнения (обнуляя коэффициент а12 матрицы). Поступим аналогично с остальными уравнениями и получим новую систему, матрица которой в первом столбце, кроме первого элемента, содержит только нули, т.е.
 

                                                   (2.3) 

  Первое  уравнение в дальнейших преобразования не участвует. Описанный выше процесс исключения неизвестных применим к матрице размерами (n-1) n. После k аналогичных шагов получим k приведенных уравнений с коэффициентами 

                   ( 2.4) 

  и матрицу  размерами (n - k) (n - k+1), элементы которой вычисляются по формулам  

                (2.5)  

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

  Обратный  ход метода Гаусса заключается в последовательном определении компонент решения, начиная с хn и заканчивая х1, по следующим формулам: 

           (2.6) 

  Прямой  ход состоит из n - 1 шагов исключения.

  1-й  шаг. Целью этого шага является исключение неизвестного x1 из уравнений с номерами i = 2, 3, …, n. Предположим, что коэффициент a11 ¹ 0. Будем называть его главным элементом 1-го шага.

  Найдем  величины 

  qi1 = ai1/a11   (i = 2, 3, …, n)                                                                         (2.7)  

  называемые  множителями 1-го шага. Вычтем последовательно из второго, третьего, …, n-го уравнений системы первое уравнение, умноженное соответственно на q21, q31, …, qn1. Это позволит обратить в нуль коэффициенты при x1 во всех уравнениях, кроме первого. В результате получим эквивалентную систему 

  a11x1 + a12x2 + a13x3 + … + a1nxn = b1 ,

  a22(1)x2 + a23(1)x3 + … + a2n(1)xn = b2(1) ,

  a32(1)x2 + a33(1)x3 + … + a3n(1)xn = b3(1) ,                                                           (2.8)

  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .

  an2(1)x2 + an3(1)x3 + … + ann(1)xn = bn(1) . 

  в которой aij(1) и bij(1) вычисляются по формулам 

  aij(1) = aij − qi1a1j    ,    bi(1) = bi − qi1b1                                                            (2.9) 

  2-й  шаг. Целью этого шага является исключение неизвестного x2 из уравнений с номерами i = 3, 4, …, n. Пусть a22(1) ≠ 0, где a22(1) – коэффициент, называемый главным (или ведущим) элементом 2-го шага. Вычислим множители 2-го шага 

  qi2 = ai2(1) / a22(1)   (i = 3, 4, …, n)                                                                 (2.10) 

  и вычтем последовательно из третьего, четвертого, …, n-го уравнения системы второе уравнение, умноженное соответственно на q32, q42, …, qm2. В результате получим систему 

        a11x1 + a12x2 +  a13x3 + … +  a1nxn =  b1 ,

              a22(1)x2 +  a23(1)x3 + … +  a2n(1) =  b2(1) ,                   (2.11)

                    a33(2)x3 + … +  a3n(2)xn =  b3(2) ,                      

  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .                           

                    an3(2)x3 + … +  ann(2)xn =  bn(2) . 

  Здесь коэффициенты aij(2) и bij(2) вычисляются по формулам 

  aij(2) = aij(1) – qi2a2j(1)   ,    bi(2) = bi(1) – qi2b2(1).                                                (2.12) 

  Аналогично  проводятся остальные шаги. Опишем очередной k-й шаг.

  k-й шаг. В предположении, что главный (ведущий) элемент k-го шага akk(k–1) отличен от нуля, вычислим множители k-го шага 

  qik = aik(k–1) / akk(k–1)   (i = k + 1, …, n)                                                           (2.13) 

  и вычтем последовательно из (k + 1)-го, …, n-го уравнений полученной на предыдущем шаге системы k-e уравнение, умноженное соответственно на qk+1,k, qk+2,k, …, qnk.

  После (n - 1)-го шага исключения получим систему уравнений 

        a11x1 + a12x2 + a13x3 + … + a1nxn = b1 ,

              a22(1)x2 + a23(1)x3 + … + a2n(1)xn = b2(1) ,                           (2.14)

                    a33(2)x3 + … + a3n(2)xn = b3(2) ,

        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .

                                ann(n–1)xn = bn(n–1) . 

  матрица A(n-1) которой является верхней треугольной. На этом вычисления прямого хода заканчиваются.

  Обратный  ход. Из последнего уравнения системы находим xn. Подставляя найденное значение xn в предпоследнее уравнение, получим xn–1. Осуществляя обратную подстановку, далее последовательно находим xn–1, xn–2, …, x1. Вычисления неизвестных здесь проводятся по формулам 

  xn = bn(n–1) / ann(n–1),                                                                                        (2.15)

  xk = (bn(k–1) – ak,k+1(k–1)xk+1 – … – akn(k–1)xn) / akk(k–1), (k = n – 1, …, 1). 

  Необходимость выбора главных элементов. Заметим, что вычисление множителей, а также обратная подстановка требуют деления на главные элементы akk(k–1). Поэтому если один из главных элементов оказывыется равным нулю, то схема единственного деления не может быть реализована. Здравый смысл подсказывает, что и в ситуации, когда все главные элементы отличны от нуля, но среди них есть близкие к нулю, возможен неконтролируемый рост погрешности.

    1. Метод Гаусса с выбором главного элемента. Метод заключается в том, что при прямом ходе в алгоритме метода Гаусса на каждом шаге исключения производится выбор наибольшего по модулю элемента в качестве ведущего. Этого достигают перестановкой строк или столбцов матрицы коэффициентов. Наиболее распространённой в вычислительной практике является стратегия выбора главного элемента столбца - нахождение максимального по модулю элемента k-го столбца матрицы и использование его в качестве ведущего элемента на k-м шаге исключения. В этом случае для невырожденных систем гарантируется, что ведущие элементы не равны нулю, и уменьшается погрешность при делении и последующем вычитании при преобразованиях. Рекомендуется также масштабировать предварительно каждое уравнение исходной системы, разделив на его наибольший по абсолютной величине коэффициент. Это делает рост элементов промежуточных матриц ограниченным.

  В методе Гаусса с выбором главного элемента по столбцу гарантируется, что |qik| ≤ 1 для всех k = 1, 2, …, n – 1 и i = k + 1, …, n. Отличие этого варианта метода Гаусса от схемы единственного деления заключается в том, что на k-м шаге исключения в качестве главного элемента выбирают максимальный по модулю коэффициент aikk при неизвестной xk в уравнениях с номерами i = k + 1, …, n. Затем соответствующее выбранному коэффициенту уравнение с номером ik меняют местами с k-м уравнением системы для того, чтобы главный элемент занял место коэффициента akk(k-1). После этой перестановки исключение неизвестного xk производят, как в схеме единственного деления. 

  
    1. Метод оптимального исключения. В целях экономии оперативной памяти (примерно в 4 раза) операции прямого и обратного хода метода Гаусса выполняются попеременно. На первом шаге после приведения первого уравнения исключается неизвестное x1 из второго уравнения, а затем с помощью приведенного второго уравнения - неизвестное x2 из первого. После (k-1) таких шагов матрица системы имеет вид
Методы решения СЛАУ. Метод Гаусса