Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа 2 МЕТОДЫ РЕШЕНИЯ СИСТЕМ ЛИНЕЙНЫХ И НЕЛИНЕЙНЫХ УРАВНЕНИЙ

Работа добавлена на сайт samzan.net: 2015-07-05

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 22.5.2024

 

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

МЕТОДЫ РЕШЕНИЯ СИСТЕМ   ЛИНЕЙНЫХ И НЕЛИНЕЙНЫХ УРАВНЕНИЙ

Система m линейных алгебраических уравнений с n неизвестными в общем виде может быть записана следующим образом:

         (1.22)

или в матричном виде AX = B, где A - прямоугольная матрица размерности mn, X - вектор n-го порядка, B - вектор m-го порядка. Решением системы (1.22) называется такая упорядоченная совокупность чисел   которая обращает все уравнения системы в верные равенства. Две системы называются эквивалентными (равносильными), если множества их решений совпадают.

Система линейных уравнений  называется совместной, если она имеет хотя бы одно решение, и несовместной - в противном случае. Совместная система называется определенной, если она имеет единственное решение, и неопределенной - в противном случае. Система является определенной, если  rang A =  rang B, где матрица B, полученная из матрицы A добавлением столбца свободных членов, называется расширенной.

Если матрица A - квадратная и det A ¹ 0, то она  называется неособенной (невырожденной), при этом система уравнений, имеющая неособенную матрицу A, совместна и имеет единственное решение.

МЕТОД ИСКЛЮЧЕНИЯ ГАУССА  ДЛЯ СИСТЕМ  ЛИНЕЙНЫХ УРАВНЕНИЙ

Из курса линейной алгебры [Крылов и др., 1972; Курош, 1962; Фадеев, Фадеева, 1963 и др.] известно, что решение системы линейных уравнений можно просто найти по правилу Крамера - через отношение определителей. Но этот способ не очень удобен для решения систем уравнений с числом неизвестных > 5, т.е. когда найти определитель сложно, а при числе неизвестных > 10 нахождение определителя с достаточно высокой степенью точности становится самостоятельной вычислительной задачей. В этих случаях применяют иные методы решения, среди которых самым распространенным является метод Гаусса.

Запишем систему линейных уравнений (1.22) в виде

              (1.24)

Если матрица системы верхняя треугольная, т.е.  ее элементы ниже главной диагонали равны нулю, то все хj  можно найти последовательно, начиная с хn, по формуле

.    (1.25)

При j > k и аjj ¹ 0 этот метод дает возможность найти решение системы.

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

Продолжая этот процесс, исключают  из  матрицы А  все коэффициенты аij, лежащие ниже главной диагонали.

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

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

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

     (1.26)

  Произведя вычисления по формулам (1.26) при всех указанных индексах, исключим  элементы  k-го столбца. Такое исключение назовем циклом, а выполнение всех циклов назовем прямым ходом исключения.

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

Если предположить, что аjj ¹ 0, то тогда можно применить подпрограмму gaus, решающую систему из n линейных  уравнений.

Формальные параметры процедуры. Входные: n (тип integer) - порядок системы; а (тип real) - массив коэффициентов системы размером nn; b (тип real) - массив-строка свободных членов. Выходные: х (тип real) - массив-строка, в который помещается решение системы.

procedure gaus (n:integer; a : mas; b : mas1;

   var x : mas1);

type mst = array [1..n] of real;

  mss = array [1..n] of mst;

var a1 : mss; b1 : mst;    

 i, j, m, k : integer;   h : real;

begin  

for i := 1 to n do

   begin

 b1[i] := b[i];     

         for j := 1 to n do  

  a1 [i,j] := a[i,j];

   end;

   for i := 1 to n-1 do

    for j := i+1 to n do

         begin  

  a1[j,i] :=- a1[j,i] / a1[i,i];

               for k := i+1 to n do

   a1[j,k] := a1 [j,k] + a1[j,i]*a1[i,k];

               b1[j] := b1[j] + b1[i]*a1[j,i];

         end;             

x[n] := b1[n] / a1[n,n];

   for i := n-1 downto 1 do

   begin

 h := b1[i];   

 for j := i+1 to n do  

  h := h - x[j]*a1[i,j];

 x[i] := h / a1[i,i];

end;

end.

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

В отличие от первой процедуры здесь в выходных параметрах есть переменная tol, возвращающая  0 при нормальном завершении работы процедуры, или 1, если на главной диагонали один из элементов равен 0, или 2, если матрица А размерностью больше, чем 5050.

procedure gaus1 (n:integer; a : mas; b : mas1;  

   var x : mas1; var tol : integer);

type mst = array [1..50] of real;    

  mss = array [1..50] of mst;

var a1 : mss; b1 : mst;     

  i, j, m, k : integer;     h : real;

begin  

for i := 1 to n do

   begin

 b1[i] := b[i];  

 for j := 1 to n do   a1 [i,j] := a[i,j];

end;

tol := 0;

   if n > 50 then

begin

 tol := 2;

 exit;

end;

   for i := 1 to n-1 do

    for j := i+1 to n do

         begin

  if abs(a1[i,i])< 1.0e-10 then

               begin

   tol := 1;

   exit;

  end;

               a1[j,i] :=- a1[j,i] / a1[i,i];

               for k := i+1 to n do

    a1[j,k] := a1 [j,k] + a1[j,i]*a1[i,k];

  b1[j] := b1[j] + b1[i]*a1[j,i]

 end;

if abs(a1[n,n]) < 1.0e-10 then

 begin

 tol := 1;

 exit;

end;

   x[n] := b1[n] / a1[n,n];

   for i := n-1 downto 1 do

   begin

 if abs(a1[i,i]) < 1.0e-10 then

         begin

  tol := 1;

  exit;

 end;

         h := b1[i];

         for j := i+1 to n do   h := h - x[j]*a1[i,j];

    x[i] := h / a1[i,i];

end;

end.

 По поводу приведенных алгоритмов можно сказать, что они не самые эффективные и пригодны для решения систем, имеющих невырожденные матрицы А и В с рангом не более 50, составленные из приблизительно одинаковых коэффициентов. Если между наибольшим и наименьшим из коэффициентов расстояние более чем 104, то эти алгоритмы применять не рекомендуется, так как погрешность вычислений будет такова, что может либо привести к вырожденной матрице А, либо дать в результате вектор Х с большой вычислительной погрешностью.

Для проверки работы процедур решим систему  линейных  уравнений методом Гаусса с точностью до 0.0001:

Коэффициенты, промежуточные результаты и окончательное решение приводятся в табл. 1.14. Подобные таблицы удобно использовать для ручного счета и проверки хода решения.

Таблица 1.14

Коэффициенты  при  неизвестных

Cвободные

Cтрочные

x1

x2

x3

x4

члены

суммы

0.68

0.21

0.11

-0.08

0.55

-0.13

0.84

0.15

-0.11

0.27

0.28

0.50

0.88

0.80

-0.06

0.12

2.15

0.44

0.83

1.16

2.85

-0.01

1.44

0.61

1

0.0735

-0.1618

0.1176

3.1618

4.1912

-0.1454

-0.18319

0.15590

0.30398

0.26220

-0.51290

-0.8247

0.0729

-0.1106

-0.22398

-0.48220

1.41290

-0.88015

-0.97847

0.94530

1

-2.09060

5.6719

1.54040

6.1217

-1.47643

-0.18697

4.79139

-0.99480

0.79920

1.17230

4.1136

-0.0095

1

-3.24410

-0.54110

-2.7851

-1.60130

1.07110

-0.5302

1

-0.66890

0.3311

2.8264

-0.3337

-2.7110

-0.6689

: РЕШЕНИЕ

МЕТОД ГЛАВНЫХ ЭЛЕМЕНТОВ

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

 Формальные параметры процедуры. Входные: n (тип integer) - целое положительное число, равное порядку исходной системы; aa (тип real) - массив из nn действительных чисел, содержащий матрицу коэффициентов системы (aa[1] = а11; aa[2] = а21; aa[3] = a31; ...; aa[n]= an1; aa[n +1]= =a12; aa[n + 2] = a22; ...;  aa[2*n] = аn2; ...;  aa[n*n] = аnn); b (тип real) - массив из n действительных чисел, содержащий столбец свободных членов исходной системы (b[1] = =b1; b[2] = b2; ...; b[n] = bn). Выходные: b  (тип real) - массив из n действительных чисел (он же был входным) при выходе из подпрограммы, содержащий решения исходной системы (b[1]= x1; b[2] = x2; ...; b[n] = xn); ks (тип integer) - признак правильности решения или код ошибки: если ks = =0, то в массиве b содержится  решение  исходной системы; если ks = 1, то исходная  система  не  имеет решения (главный определитель ее равен нулю).

procedure   sinq (var a: mas11; var b : mas1;

    var ks : integer; n : integer);

var tol, biga, aa, save : real;

      jj,jy,ij,it,j,i, i1, imax, k, iqs, ixj, ixjx : integer;

      jjx, ny, ia, ib, io, i2, ix, jx, ky : integer;

label Cont10;

begin  tol := 0.0;        

ks := 0;         

 jj := -n;

   for j := 1 to n do

   begin   jy   := j + 1;

 jj := jj + n + 1;

 biga := 0.0;   

 it := jj - j;

         for i := j to N do

         begin

  ij := it + i;      

  aa := abs (a[ij]);

               if (abs(biga)-aa) < 0.0 then

  begin

   biga := a[ij];

   imax := i; end;

               end;

               if (abs(biga)-tol) <= 0.0 then

  begin

   ks := 1;

   exit;

  end;

  i1 := j + n*(j-2);  

  it := imax - j;

               for k := j to n do

               begin

   inc (i1,n);

   I2:= i1 + it;  

   save := a[i1];

   a[i1] := a[i2];

                      a[i2] := save;

   a[i1] := a[i1] / biga;

  end;  

  save := b[imax];    

  b[imax] := b[j];

          b[j] := save / biga;

  if j=n then goto Cont10;

            iqs := n*(j-1);

  for ix := jy to n do

            begin

   ixj := iqs + ix;

   it := j - ix;

                 for jx := jy to n do

                 begin

    ixjx := n*(jx-1) + ix;

    jjx := ixjx + it;

                           a[ixjx] := a[ixjx] - a[ixj]*a[jjx];

   end;

   b[ix] := b[ix] - b[j]*a[ixj];

  end;

 end;

Cont10:  ny := n - 1;

 it := n*n;        

 i := 1;  

 j :=1;

      for ky := 1 to ny do

      begin  ia := it - ky;  

  ib := n - ky;  

  io := n;

               for k := 1 to ky do

               begin

   b[ib] := b[ib] - a[ia]*b[io];

                      Dec (ia,n);

   Dec (io);

  end;

 end;    

end.

 Для проверки процедуры и сравнения с работой процедур в п. 3.1 решалась система уравнений, приведенная в качестве примера в п. 3.1. Вычисления проводились с точностью до 10-5. Результаты работы программы приведены далее.

Исходная матрица     А

Матрица В

0.680000   0.050000  -0.110000      0.080000

0.210000  -0.130000   0.270000    -0.800000

-0.110000  -0.840000   0.280000     0.060000

-0.080000   0.150000  -0.500000   -0.120000

2.150000

0.440000

-0.830000

1.160000

Преобразованная матрица А

Матрица В

1.000000   0.210000  -0.110000   -0.080000

0.000000   1.000000  -0.145441    0.155882

0.000000   0.000000    1.000000    0.258130

0.000000   0.000000    0.000000     1.000000  

 3.161765

 0.579636

-2.851572

-0.669070

РЕШЕНИЕ СИСТЕМЫ  

2.826351  -0.333733  -2.711759  -0.669070 .

   

РЕШЕНИЕ  СИСТЕМ ЛИНЕЙНЫХ УРАВНЕНИЙ МЕТОДОМ  КВАДРАТНОГО КОРНЯ

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

Метод квадратного корня применяется для решения системы линейных уравнений, коэффициенты которой образуют эрмитову симметрическую матрицу (эрмитова матрица совпадает с комплексно-сопряженной транспонированной A* = A).

Представим матрицу А в виде А = S*D S, где S - верхняя треугольная матрица с положительными элементами на главной диагонали; S*- транспонированная к матрице S; D- диагональная матрица, на  диагонали  которой  находятся  числа (+1) или (— 1).

Если матрицы S и D найдены, то заданная система AХ= = F может быть решена следующим путем:

AX = S* D S X = (S* D) S X = B Y = F,    (1.28)

где S*D = В  есть нижняя треугольная матрица и Y = S X - вспомогательный вектор.

Таким образом, решение системы АX = F равносильно решению двух треугольных систем  ВY = F  и  SX =Y.

Пусть S = (sik) при i > k и sik ¹ 0, sii > 0; S* = (); D = =(dik), d =1; i ¹ k. Тогда из сравнения матриц А  и S*DS получим

.

Ограничение в сумме получается из учета того факта, что в матрице S ниже главной диагонали элементы обращаются в нуль. Последнее равенство  можно переписать несколько иначе, приняв для определенности  k = min(k,  l):

;

,

откуда окончательно получим формулы для вычисления элементов матриц S и D:

     (1.29)

Единственным условием возможности определения sik является skk ¹ 0. Для построения матриц полагаем k = 1 и последовательно вычисляем все элементы первой строки s по формуле (1.29); затем полагаем k = 2 - и определяем элементы второй строки и т.д. Когда k = n, тогда найдены все элементы матриц S и D, а следовательно и S*. Затем последовательно выполняем вычисления (1.28):

 S* Z = F; D Y = Z; S X = Y 

обычным ходом по формулам

        (1.30)

при i = 2, 3,  ..., n.

Попутно заметим, что определитель матрицы А можно  вычислить из выражения

.                       (1.31)

Этот метод экономичен, требует n3/3 арифметических действий и при больших n ( n > 50) вдвое быстрее метода Гаусса. Если за основу процедуры принять алгоритм П5.6 Дьяконова [1987], то тогда метод квадратного корня может быть реализован c помощью следующей процедуры:

procedure KVK (M, N : integer;

   aa: array of real; bb : array of real;

   var C: array of real);

type mas1=array [0..4] of real;

 mas=array [0..4] of mas1;

var a : mas; j, k, i : integer;    s, c1 : real;

begin   

i := 0;  

for j := 1 to m do  

 for k := 1 to n do  

     begin   Inc (i);  a[j,k] := aa [i];    end;

        for j := 1 to N do

       begin   

  for k := j to N do   

  begin    

   s := 0.0;

                 for i := 1 to M do   s := s + a[i,j] * a[i,k];

         c[k] := s;       

  end;      

  c1 := 0.0;

            for i := 1 to M do   с1 := c1 + a[i,j]*Bb[i];

             for i := j to N do  a[i,j] := c[i];

           c[J] := c1;

 end;             

 a[1,1] := sqrt (a[1,1]);

       for j := 2 to N do  a[1,j] := a[j,1] / a[1,1];

       for i := 2 to n do

     begin

  s := 0.0;

  for k := 1 to i-1 dо  s := s + a[k,i]*a[k,i];   

  a[i,i] := sqrt (a[i,i] - S);   

               for j := i+1 to N do

               begin

   s := 0.0;   

   for k := 1 to i-1 do

    S := S + A[K,I]*A[K,J];

                      A[I,J] := (A[J,I] - S) / A[I,I];

              end;    

 end;

 c[1] := c[1] / a[1,1];

    for i := 2 to N do

    begin   s := 0.0;  

  for k := 1 to i-1do  

   s := s + a[k,i] * c[k];     

  c[i] := (c[i] - s) / a[i,i];

 end;

 c[n] := c[n] / a[n,n];

     for i := n-1 downto 1 do

    begin       s := 0.0;    

        for k := i+1 to N do    s := s + a[i,k] * c[k];   

  c[i] := (c[i] - s) / a[i,i];  

 end;

еnd.

 Формальные параметры процедуры.Входные: m, N (тип integer) - m уравнений и n неизвестных определяют размер матрицы А. Для этой процедуры обязательно выполнение m > n, т.е. количество уравнений должно быть больше количества неизвестных (система переопределена), предельный разрешенный случай m = n; а -  матрица,  составленная  из  коэффициентов  при неизвестных; В - массив, составленный из столбца свободных членов. Выходные: С - массив, в котором содержится решение системы.

Для проверки правильности работы процедуры решалась система 44 линейных уравнений методом квадратных корней с точностью 0.0001:

0.68X1  + 0.05X2  +  0.11X3  +  0.08X4  =  2.15 ;

0.05X1  + 0.13X2 +  0.27X3  +  0.80X4  =  0.44 ;

0.11X1  + 0.27X2  +  0.28X3  +  0.06X4  =  0.83 ;

0.08X1  + 0.80X2  +  0.06X3  +  0.12X4  =  1.16 ,

решение которой, полученное методом квадратных корней, будет следующим

Х 1 = 2.97; Х2  = 1.11; Х3  = 0.74; Х4  = -0.07.

РЕШЕНИЕ СИСТЕМ  ЛИНЕЙНЫХ УРАВНЕНИЙ МЕТОДОМ ИТЕРАЦИЙ

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

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

Пусть дана система линейных алгебраических уравнений (1.22) с неособенной матрицей. В методе простой итерации если аii ¹ 0, то исходная система может быть преобразована к виду хi = bi + aij хj , i ¹ j, т.е. из каждого уравнения последовательно выражают хi.

Здесь bi = Fi  / аii; aij = - аij / аii. Таким образом, в матричном виде имеем Х = В + . Полученную систему будем решать методом последовательных приближений. За нулевое приближение Х(0)  можно принять матрицу В: Х(0)= = B, и далее, подставив найденные значения в исходную систему, получим Х (1) = В + A Х(0) .

При бесконечном повторении этой вычислительной схемы имеем

,

где и будет искомое решение системы.

Условия сходимости итерационного процесса определяются теоремами, которые приводятся нами без доказательств.

 Теорема 1. Для того, чтобы последовательность приближений Х(n) сходилась, достаточно, чтобы все собственные значения матрицы A были по модулю меньше единицы:  | li | < 1, i = 1, 2, ..., n.

 Теорема 2. Если требовать, чтобы последовательность Х(n) сходилась к  при любом начальном приближении Х(0) , то условие теоремы 1 является необходимым.

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

 Теорема 3.  Если для системы Х = В + выполняется хотя бы  одно из условий :    

;

,

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

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

 Теорема 4.  Если какая-либо норма матрицы A, согласованная  с  рассматриваемой нормой вектора Х, меньше единицы, то верна  следующая оценка погрешности приближения в методе простой итерации:

.              

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

Так, можно предложить к использованию следующую удобную и достаточно эффективную процедуру, взятую из БСП БЭСМ для транслятора ALFA. Перевод на язык PASCAL выполнен авторами.

procedure ITER (n, ik :integer; eps : real;

   a : mas1; b : mas; var x : mas);

var  x1 : mas;    s : real;     i, j, k : integer;

begin   x1 := b;  

x := x1;  k := 0;

   repeat   s := 0.0;   

 Inc(k);   

         for i := 1 to n do        

 begin

  for j := 1 to n do x[i] := a[i,j]*x1[j] + b[j];    

  s := s + abs (x[i]-x1[i]);

 end;

 s := s / n;   x1 := x;

until (s<eps) and (k>ik);

end.

 Формальные параметры процедуры. Входные: А (тип real) - матрица, составленная из коэффициентов при Х преобразованного уравнения; В (тип real) - матрица, составленная из свободных членов; N (тип integer)  - размерность матриц А (N N) и В(N); IK (тип integer) - предельно возможное количество итераций (введено для того, чтобы в случае расхождения процесса выйти из подпрограммы. Обычно решение достигается за 3-6 итераций); ЕРS (тип real) - заданная погрешность решения. Выходные: Х (тип real) - матрица, в которой находится решение системы.

Для примера методом простых итераций решена система 44 линейных уравнений с точностью до 0.0001:

Х1  = 0.08Х1  + 0.05Х2  + 0.11Х3  + 0.08Х4  + 2.15

Х2  = 0.05Х1  + 0.13Х2  + 0.27Х3  + 0.28Х4  + 0.44

Х3  = 0.11Х1  + 0.27Х2  + 0.28Х3 + 0.06Х4  + 0.83

Х4  = 0.08Х1  + 0.18Х2  + 0.06Х3  + 0.12Х4  + 1.16

Результаты вычислений представлены в табл. 1.16.

Таблица 1.16

X[1]

X[2]

X[3]

X[4]

№  итерации

2.150000

0.440000

0.830000

1.160000

iter  =  0

1.252800

1.484800

1.229600

1.299200

iter = 1

1.263936

1.523776

1.237952

1.315904

iter  = 2

1.265272

1.528453

1.238954

1.317908

iter  = 3

1.265433

1.529014

1.239075

1.318149

iter  = 4

1.265452

1.529082

1.239089

1.318178

iter  = 5

1.265454

1.529090

1.239091

1.318181

iter  = 6

1.265455

1.529091

1.239091

1.318182

iter  = 7

  1.265455       1.529091        1.239091      1.318182  :РЕШЕНИЕ

3.6. РЕШЕНИЕ  СИСТЕМ   ЛИНЕЙНЫХ  УРАВНЕНИЙ МЕТОДОМ  ЗЕЙДЕЛЯ

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

Метод Зейделя применяют в двух расчетных схемах. Рассмотрим каноническую форму (для схемы итераций). Пусть система приведена к виду Х = Вх + b. В схеме простой итерации следующее приближение Х(k +1) находится путем подстановки предыдущего приближения Х(k) в правую часть выражения X(k +1) = B X (k) + b.

Для  удобства рассуждений полагаем, что левые части уравнений содержат хi  (элементы матрицы X(k +1)) с возрастающими номерами, т.е. сначала х1, затем х2, х3, ..., хn. Тогда решение системы уравнений Х = Вх + b на очередной (+1) итерации будет иметь вид

,  (1.32)

т.е. каждое очередное найденное приближение хi(k +1) сразу же используется для определения . Условия сходимости для итерационного метода Зейделя дают те же теоремы, что и в методе простых итераций.

Вторая форма метода Зейделя требует предварительного приведения системы (1.22) к виду, когда все диагональные элементы отличны от нуля. Если разложить матрицу А на сумму двух матриц R + С, где R - нижняя диагональная матрица, а С - верхняя с нулями на главной диагонали, то систему (1.22) можно записать как

Ax = (R + C)x =  R x(k +1) + C x(k) = B  

или x(k +1) = R -1B - R -1C x(k) 

и тогда становится ясно, что метод Зейделя в канонической форме равносилен методу простой итерации, примененному к системе

X = R -1B - R -1C X.

Для решения системы линейных уравнений методом Зейделя можно использовать процедуру из п. 3.5, слегка ее модифицировав для случая системы n уравнений:

procedure ITER (n, ik :integer; eps : real;

   a : mas1; b : mas; var x : mas);

var  x1 : mas;    s : real;     i, j, k : integer;

begin     x1 := b;  

x := x1;   

k := 0;

   repeat    s := 0.0;   

 Inc(k);

      for i := 1 to n do

      begin

  for j := 1 to n do

   x[i] := a[i,j]*x1[j] + b[j];

           s := s + abs (x[i]-x1[i]);   

  x1 := x;

 end;

 s := s / n; x1 := x;

   until (s<eps) and (k>ik);

end.

 Формальные параметры процедуры такие  же,  как и в п. 3.5. Для сравнения решим такую же систему  линейных  уравнений, как в методе  итераций (см. п. 3.5). Результат решения системы методом Зейделя (табл. 1.17) можно сравнить с результатами табл. 1.16.

Таблица 1.17

x[1]

x[2]

x[3]

x[4]

№ итерации

2.150000

0.440000

0.830000

1.160000

iter = 0

1.252800

1.484800

1.229600

1.299200

iter = 1

1.263936

1.523776

1.237952

1.315904

iter = 2

1.265272

1.528453

1.238954

1.317908

iter = 3

1.265433

1.529014

1.239075

1.318149

iter = 4

1.265452

1.529082

1.239089

1.318178

iter = 5

 1.265452    1.529082    1.239089    1.318178   :РЕШЕНИЕ

Решить системы методом Гаусса; методом простой итерации и методом Зейделя с точностью , сравнить итерационные методы по числу итераций; сравнить по эффективности (трудность реализации метода, объем памяти, общие затраты времени) итерационные методы и метод Гаусса

а)


Вариант

Исходные данные

  1.  

  1.  

  1.  

  1.  

  1.  

  1.  

  1.  

  1.  

  1.  

  1.  

б)


Вариант

Исходные данные

  1.  


Вариант

Исходные данные

  1.  

  1.  

  1.  

  1.  

  1.  

  1.  

  1.  

  1.  

  1.  




1. і Ерекше элементтер ~арама~арсы элементтер кері элементтер
2. МОДУЛЬНІЙ ОРГАНІЗАЦІЇ НАВЧАЛЬНОГО ПРОЦЕСУ ДЕННОЇ ФОРМИ НАВЧАННЯ ІНЖЕНЕРНОПЕДАГОГІЧНИХ СПЕЦІАЛЬНОСТЕЙ.html
3. Red the text nd complete the MEN column in the tble.html
4. Саратовская государственная юридическая академия Кафедра конституционного и международного права
5. Реферат- Приспособления, примняемые при ремонте оборудования
6. Задание 1 В таблице приведены данные о факторе производства выпуске продукции и поступлениях за аренду усл
7. Правознавство Житомирського комерційного технікуму З 7
8. Производственная функция. Предприятие. Классификация предприяти
9. гендер засвідчило що воно з моменту свого первісного вживання мало ряд суттєвих трансформацій що з часом о
10. Налог на доходы физических лиц
11. ПЕРЕЧЕНЬ ДИАГНОСТИЧЕСКИХ ИССЛЕДОВАНИЙ ДЛЯ ОСВОЕНИЯ
12. Дипломная работа- Анализ ассортимента и оценка качества колбасных изделий реализуемых предприятием розничной торговли
13. АРХИЛЭНД Наши цели и задачи- пропаганда здорового образа жизни среди школьников гармоничное раз
14. Лабораторная работа 7 7 Решение систем нелинейных уравнений Цель- изучить основные возможности приложен
15. немецкой границы
16. Реферат- Основы власти и властвования
17. Тема 1.10 Основы разработки и внедрения новой продукции Лабораторнопрактическая работа 32 Методика раз
18. Мюнхен
19. За рубежом существует немало научных работ где изложены вопросы истории теоретического изучения социа
20. реферат дисертації на здобуття наукового ступеня кандидата фармацевтичних наук Ки