Реферат

Реферат Метод прогонки

Работа добавлена на сайт bukvasha.net: 2015-10-28

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

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

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

от 25%

Подписываем

договор

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

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



Содержание:

Введение………………………………………………………………………..3

1.     Суть метода прогонки…………………………………………………..4

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

3.     Виды прогонки…………………………………………………………..7

4.     Теорема о корректности и устойчивости прогонки…………………..10

5.     Решение системы методом прогонки. Код, реализующий метод прогонки…………………………………………………………………..12

6.     Трёхдиагональная матрица (матрица Якоби)…………………………15

Заключение……………………………………………………………………..19

Список литературы…………………………………………………………….20
ВВЕДЕНИЕ

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

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

b1U1+c1U2=-a1U0,

видим, что оно связывает между собой два соседних значения U1, и U2. Перепишем его в виде:

d1U2+e=U1, (1)

где d1 и е1вычисляются по известным значениям. Наблюдательный читатель заметит, что это справедливо только для задач первого рода. Чуть позже мы получим общее решение. Теперь мы можем исключить £/, из уравнения для следующей тройки узлов:

a2U1+b2U2+c2U2=f2,

подставив значение U1 из уравнения (8). После этой процедуры последнее уравнение также может быть приведено к виду:

d3U3+e2=U2,

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

di-1Ui+ei-1=Ui-1,

в уравнение

aiUi-1+biUi+ciUi+1=fi,

получим:

Ui=-[CiUi+1/(aidi-1+bi)]+[fi-ai+1*ei+1/(aidi-1+bi)] (2)

Это соотношение дает две рекуррентные формулы для коэффициентов:

di=-Ci/(ai*di-1+bi) (3)

ei=(fi-ai*ei-1)/(aidi-1+bi) (4)

Цикл вычисления последовательности коэффициентов в соответствии с этими формулами носит название прямого хода прогонки.
do=yo, eo=бo,

Цикл прямого хода повторяется N-1 раз. Последними будут вычислены коэффициенты dN-1 и eN-1, которые связывают функции в двух узлах вблизи правой границы:

Un-1=dn-1Un+en-1 (5)

Если на правой границе задано условие первого рода Un = с, то уже можно вычислить Un-1 и далее продолжать обратный ход прогонки при I = N - 1,..., 1, 0. Если условие более сложное, то надо рассмотреть уравнение (6), определяющее граничное условие на правой границе. Напомним его:

Un=ynUn-1+бn (6)

Соотношения (6) и (5) составляют систему из двух уравнений с двумя неизвестными. Используя определители, запишем ее решение.

Un-1=(en-1+бndn-1)/(1-yndn-1) (7)

Un=(бn+ynen-1)/(1-yndn-1)

Таким образом, мы нашли значения в двух узлах, лежащих вблизи правой границы расчетной области. Теперь, используя формулу (2) и уменьшая индекс i от N= 2 до 0, можно вычислить все неизвестные £/.. Этот процесс носит название обратного хода прогонки. Почему-то в голову приходит лозунг нашего времени: «Цели ясны, задачи определены.





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

Пусть Ax=b, где A – трехдиагональная матрица. Матрица A=[aij] называется (2m+1) – диагональной, если aij=0 при |i-j|>m.

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

Матрица A

Получаем A{i}x{i-1}+C{i}x{i}+B{i+1}x{i}=b{i} (1), используем метод прогонки, исходя из следующего рекуррентного соотношения:x{i-1}=?{i-1}x{i}+?{i-1},(2) получаем:

?{2}=(-B{1})/C{1} ; ?{2}=b{1}/C{1} ; (3)

?{i+1}=(-B{i})/(A{i}?{i}+C{i}) ; 
?{i+1}=(b{i}-A{i}?{i})/(A{i}?{i}+C{i}) ; (4)

Эти формулы представляют собой прямой проход метода. Обратный проход:

x{n}=(b{n}-A{n}?{n})/(A{n}&#945{n}+C{n}) ; (5)

Остальные xi находим из формулы (2).

Для применимости метода прогонки достаточно, чтобы матрица A была с диагональным преобладанием.

Алгоритм:

1.     Вводим str/stlb – количество строк/столбцов, A – элементы расширенной матрицы

2.     Проверяем матрицу на диагональное преобладание

3.     Если матрица с диагональным преобладанием тогда п.4, иначе п.8

4.     Выполняем прямой ход метода (формулы (3), (4)): c[1]:=A[1,2]/A[1,1]; d[1]:=A[1,stlb]/A[1,1];

c[i]:= (-A[i,i+1])/(A[i,i-1]*c[i-1]+A[i,i]);

d[i]:= (A[i,stlb]-A[i,i-1]*d[i-1])/(A[i,i-1]*c[i-1]+A[i,i])

5.     Далее обратный ход (формулы (2),(5)):

x[str]:=(A[str,stlb]-A[str,str-1]*d[str-1])/(A[str,str]+A[str,str-1]*c[str-1]);

x[i]:=c[i]*x[i+1]+d[i];

6.     Выводим x;

7.     Проверки на невязку;

8.     Заканчиваем алгоритм.

В программе: A[i,i+1] = Bi, A[i,i] = Ci, A[i,i-1] = Ai, A[i,stlb] = bi, d[i] = ?i, c[i] = ?i, str = n.

Описание входной информации: Str (Stlb) – количество строк (столбцов) в расширенной матрице, A [i, j] – матрица A (i – строки, j – столбцы)
3. Виды прогонки

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

Рассмотрим наиболее простой случай ленточных систем, к которым, как увидим впоследствии, сводится решение задач сплайн-интерполяции функций, дискретизации краевых задач для дифференциальных уравнений методами конечных разностей, конечных элементов и др. А именно, будем искать решение такой системы, каждое уравнение которой связывает три “соседних” неизвестных:
                            bixi
-1
+
cixi
+
dixi
=
ri
                                       
        
(1)
где i=1,2,...,n; b
1
=
0, dn
=
0. Такие уравнения называются трехточечными разностными уравнениями второго порядка. Система (1) имеет трёхдиагональную структуру, что хорошо видно из следующего, эквивалентного (1), векторно-матричного представления:

                                              

                                   c1  d1 0  0  ...  0   0   0                   x1                    r1

                                   b2  c2 d2 0  ...  0   0   0                   x2                    r2 

                                   0  b3  c3  d3 ...  0   0   0                   x3                             r3         

                                   .   .   .    .    ...   .   .   .            *       ...          =        ...    

                                   0  0  0  0    ...  bn-1
cn-1
dn-1                 
 xn-1                            
rn-1


                                   0  0  0  0    ...  0   bn   
cn                        
xn                             
 
 rn

Как и в решении СЛАУ методом Гаусса, цель избавится от ненулевых элементов в поддиаганальной части матрицы системы, предположим, что существуют такие наборы чисел δi
и λ
i
(
i
=1,2
,...,n
)
, при которых
                                      xi=
δ
i
xi+1+
λ
i
                                                       
(2)
т.е. трехточечное уравнение второго порядка (1) преобразуется в двухточечное уравнение первого порядка (2). Уменьшим в связи (2) индекс на единицу и полученое выражение xi
-1
= δ
i
-1
xi
+ λ
i
-1
подставим в данное уравнение (1):
                                      biδi-1 xi+ bi
λ
i-1
+ cixi+ dixi+1= ri      


откуда

                                      xi= -((di /( ci+ biδi-1)) xi-1+(ri - bi λ
i-1
)/( ci - bi δ
i-1
)).
Последнее равенство имеет вид (2) и будет точно с ним совпадать, иначе говоря, представление (2) будет иметь место, если при всех i
=1,2,…,
n
выполняются рекуррентные соотношения
                            δi = - di /( ci+ biδi-1) ,   λ
i=
(ri - bi λ
i-1
)/( ci - bi δ
i-1
)           (3)
Легко видеть, что, в силу условия b
1
=0
, процесс вычисления δi
, λi
 может быть начат со значений

        

                                      δ1 = - d1/ c1 ,         λ
1
=

r1
/
c1

и продолжен далее по формулам (3) последовательно при i
=2,3,...,
n
, причем при i
=
n
,
в силу dn
=0,
получим δn
=
0.Следовательно, полагая в (2) i
=
n
,будем иметь
                                      xn = λ
n
=
(rnbn λ
n-1
)/( cnbn δ
n-1
)
(где λn
-1
, δ
n
-1
уже известные с предыдущего шага числа). Далее по формулам (2) последовательно находятся xn
-1
, xn
-2
,…, x
1
при i
=
n
-1,
n
-2,...,1
соответственно.

Таким образом, решение уравнений вида (1) описываем способом, называемым методом прогонки, сводится к вычислениям по трём простым формулам: нахождение так называемых прогоночных коэффициентов δi
, λi
 
по формулам (3) при i
=1,2,…,
n
(прямая прогонка) и затем неизвестных xi по формуле (2) при i
=
n
-1,
n
-2,...,1
(обратная прогонка).

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

Будем называть прогонку корректной, если знаменатели прогоночных коэффициентов (3) не обращаются в нуль, и устойчивой, если |δi
|<
1 при всех i
{1,2,...,n
}.

Приведем простые достаточные условия корректности и устойчивости прогонки, которые во многих приложениях метода автоматически выполняются.
4. Теорема о корректности и устойчивости прогонки

Пусть коэффициенты
bi
и di  уравнения (1) при i
=2,3,...,
n
-1 отличны от нуля и пусть

                   |
ci
|>|
bi
|+|
di
|                  
i
=1,2,…,
n
.                             
(4)
Тогда прогонка (3), (2) корректна и устойчива (т.е. сi
+
biδi
-1
0,i
|<
1).
Доказательство. Воспользуемся методом математической индукции для установления обоих нужных неравенств одновременно.

При i
=
1, в силу (4), имеем:     

|
c
1
|>|
d
1
|≥
0
- неравенство нулю первой пары прогоночных коэффициентов, а так же
                                      1
|=|-

d1/

c1|<
1   
Предположим, что знаменатель (i-1)-x прогоночных коэффициентов не равен нулю и что i
-1
|<
1. Тогда, используя свойства модулей, условия теоремы и индукционные предположения, получаем:
                   |сi
+
biδi
-1
|≥|
ci
| - |
biδi
-1
|>|
bi
|+|
di
| - |
bi
|*|
δi
-1
|= |
di
|+|
bi
|
(1 - | δi
-1
|)> |di
|
>0

а с учетом этого

                                     |δ
i
|=|- di/
с
i
+biδi-1|=|
δ
i
|/|
с
i
+biδi-1|<
|δ
i
|/
|δ
i
|=
1   
Следовательно, сi
+
biδi
-1
0 и i
|<
1 при всех i
{1,2,...,n
}, т.е. имеет место утверждаемая в данных условиях корректность и устойчивость прогонки. Теорема доказана.

Пусть А – матрица коэффициентов данной системы (1), удовлетворяющих условиям теоремы, и пусть

                           

δ
1
= - d1/ c1  , 
δ
i
=|- di/ ci+biδi-1   
(i=2,3,...,n-1),   δ
n
=0


- прогоночные коэффициенты, определяемые первой из формул (3), а

                            i
= с
i
+
biδi
-1
        
(i
=2,3,...,
n
)

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

                      
                                   c1   0  0   0  ...  0    0    0              

                                  
b2   2
0  0  ...  0    0    0                  

                           L=    0 
b3  3   
0  ...  0    0    0                  

                                   …………………………      

                                   0   0   0   0    ...  bn-1
n-1
0               

                                   0   0   0   0    ...  0   bn   
n                    




                                    1  -δ1  0   0  ...  0    0    0              

                                   0   1   
δ2
  0  ...  0    0    0                  

                           U=    0   0
  
1  
δ3
  ...  0    0    0                  

                                   …………………………       

                                   0   0   0   0   ...  0   1  -δn-1      

                                   0   0   0   0   ...  0   0     1                  

Единственное в силу утверждение теоремы LU-разложения матриц. Как видим, LU-разложение трехдиагональной матрицы А может быть выполнено очень простым алгоритмом, вычисляющем  i
δ
i
при возрастающих значениях i. При необходимости попутно может быть вычислен

                                                 n

det A = c1
i
.


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

5. Решение системы методом прогонки. Код, реализующий метод прогонки

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

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



Поделив первую строку матрицы, приведенной выше, на -b1 очевидно, что:



и можно вывести формулу для прямого хода:



Затем необходимо выполнить обратный ход - найти вектор X, из последней строки преобразованной матрицы следует, что xn= Qn.

В тоже время остальные элементы вектора считаются по формуле:



Следует заметить, что метод устойчив если(следует из диагонального преобладания матрицы А):



и корректен, если(иначе формулы прямого хода не имеют смысла):



Ниже представлен код, реализующий метод прогонки, принимает трехдиагональную матрицу a размерности N*N, и вектор правых частей b размерности N, результат возвращается в b:

void sweep(double a[N][N],double b[N])

{

int i;

double znam;

 b[0]/=a[0][0];//Q1

a[0][1]/=-a[0][0];//P1

for(i=1;i < N-1;i++)

{

  znam=-a[i][i]-a[i][i-1]*a[i-1][i]; //общий знаменатель для формул нахождения Pi, Qi

  a[i][i+1]/=znam; //Pi

  b[i]=(a[i][i-1]*b[i-1]-b[i])/znam; //Qi

}

//строка ниже для вычисления QN

b[N-1]=(a[N-1][N-2]*b[N-2]-b[N-1])/(-a[N-1][N-1]-a[N-1][N-2]*a[N-2][N-1]);



 //обратный ход

for(i=N-2;i > -1;i--)

{

  b[i]+=b[i+1]*a[i][i+1];

}

return;

}

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

image031.gif (1935 bytes)

Преобразуем первое уравнение системы к виду image033.gif (291 bytes), где image035.gif (263 bytes), image037.gif (269 bytes)

Подставим полученное выражение во второе уравнение системы и преобразуем его к виду image039.gif (297 bytes)и т.д. На i-ом шаге уравнение преобразуется к виду image041.gif (295 bytes), где image043.gif (343 bytes), image045.gif (435 bytes). На m-ом шаге подстановка в последнее уравнение выражения image047.gif (333 bytes)дает возможность определить значение image049.gif (187 bytes):

image051.gif (511 bytes). Значения остальных неизвестных находятся по формулам: image052.gif (295 bytes), i = m-1, m-2, ..., 1.

Пример 4. Решение системы уравнений методом прогонки.

image092.gif(1061 bytes)

Прямой ход прогонки. Вычислим прогоночные коэффициенты:

image093.gif(253 bytes), image094.gif(311 bytes), image095.gif(322 bytes)

image096.gif(476 bytes), image097.gif(338 bytes)   image098.gif(648 bytes)

image099.gif(278 bytes), image100.gif(274 bytes), image101.gif(294 bytes)

image102.gif(285 bytes), image103.gif(351 bytes)

Обратный ход прогонки. Находим значения неизвестных:

image104.gif(264 bytes), image105.gif(313 bytes), image106.gif(313 bytes), image107.gif(320 bytes)

Ответ: image108.gif(220 bytes)  image109.gif(215 bytes)  image110.gif(215 bytes)  image111.gif(226 bytes).

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

Трёхдиагональной матрицей или матрицей Якоби называют матрицу следующего вида:

A = \begin{pmatrix} C_1    & B_1    & 0
      & 0      & \dots  & 0       & 0       & 0
                         \\ A_2    & C_2    & B_2    & 0    
  & \dots  & 0       & 0       & 0
                         \\ 0      & A_3    & C_3    & B_3  
  & \dots  & 0       & 0       & 0
                         \\ \vdots & \vdots & \vdots & 
\vdots & \ddots & \vdots  & \vdots  & \vdots
                         \\ 0      & 0      & 0      & 0    
  & \dots  & A_{n-1} & C_{n-1} & B_{n-1}
                         \\ 0      & 0      & 0      & 0    
  & \dots  & 0       & A_n     & C_n
            \end{pmatrix}
  .

Системы линейных алгебраических уравнений с такими матрицами встречаются при решении многих задач математики и физики. Краевые условия x1 и xn, которые берутся из контекста задачи, задают первую и последнюю строки. Так краевое условие первого рода F(x = x1) = F1 определит первую строку в виде C1 = 1, B1 = 0, а условие второго рода dF / dx(x = x1) = F1 будет соответствовать значениям C1 = − 1, B1 = 1.

Метод прогонки


Для решения систем вида ~Ax=Fили, что то же самое,

~A_{i}x_{i-1}+C_{i}x_{i}+B_{i}x_{i+1} = F_{i}                                                                  (1)

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

x_i = \alpha_{i+1}x_{i+1} + \beta_{i+1}\,\!
       , где ~i=n-1,n-2,\dots,1                    (2)

Используя это соотношение, выразим xi-1 и xi через xi+1 и подставим в уравнение (1):

\left(A_i\alpha_i\alpha_{i+1} + C_i\alpha_{i+1} + B_i\right)x_{i+1}
 + A_i\alpha_i\beta_{i+1} + A_i\beta_i + C_i\beta_{i+1} - F_i = 0,

где Fi — правая часть i-го уравнения. Это соотношение будет выполняться независимо от решения, если потребовать

\begin{cases} A_i\alpha_i\alpha_{i+1} + C_i\alpha_{i+1} + B_i = 0\\
 
A_i\alpha_i\beta_{i+1} + A_i\beta_i + C_i\beta_{i+1} - F_i = 0 
\end{cases}

Отсюда следует:

 
\alpha_{i+1} = \frac{-B_i}{A_i\alpha_i + C_i}

 
\beta_{i+1} = \frac{F_i - A_i\beta_i}{A_i\alpha_i + C_i}

Из первого уравнения получим:

\alpha_2 = \frac{-B_1}{C_1}

\beta_2 = \frac{F_1}{C_1}

После нахождения прогоночных коэффициентов α и β, используя уравнение (2), получим решение системы. При этом,

x_i = {\alpha_{i+1}x_{i+1} + \beta_{i+1}},\!     i=n-1..1 \,\!

 
x_n = \frac{F_n-A_n\beta_n}{C_n+A_n\alpha_n}

Другим способом объяснения существа метода прогонки, более близким к терминологии конечно-разностных методов и объясняющим происхождение его названия, является следующий: преобразуем уравнение (1) к эквивалентному ему уравнению

~A' x=F'                    (1')

c надиагональной матрицей

A'
 = \begin{pmatrix} C_1' & B_1 & 0   & 0   & \cdots &
 0 & 0
                         \\ 0 & C_2' & B_2 & 0   & 
\cdots & 0 & 0
                         \\ 0   & 0 & C_3' & B_3 & 
\cdots & 0 & 0 
                         \\ \cdots & \cdots & \cdots & 
\cdots & \cdots & \cdots & \cdots 
                         \\ \cdots & \cdots & \cdots & 
\cdots & \cdots & \cdots & \cdots 
                         \\ \cdots & \cdots & \cdots & 
\cdots & \cdots & C'_{n-1} & B_{n-1}
                         \\ 0 & 0 & 0 & 0 & \cdots &
 0 & C_{n}'
            \end{pmatrix}
  .

Вычисления проводятся в два этапа. На первом этапе вычисляются компоненты матрицы ~C_i'и вектора ~F', начиная с  ~i=2  до  ~i=n:
~C'_1=C_1;
C'_i=\frac{C_i-A_i B_{i-1}}{C'_{i-1}},

и

~F'_1=F_1;

F'_i=\frac{F_i-F_{i-1} B_{i-1}}{C'_{i-1}}.

На втором этапе, для i=n, n-1, \dots, 1вычисляется решение:

x_n=\frac{F'_n}{C'_n};
x_i=\frac{F'_i-B_i x_{i+1}}{C'_i}.

Такая схема вычисления объясняет также английский термин этого метода «shuttle».

Для применимости формул метода прогонки достаточно свойства диагонального преобладания у матрицы A.

Описание выходной информации: x – матрица-ответ
Заключение

Таким образом, мы:

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

2.     реализовали программный код

3.     доказали теорему о корректности и устойчивости прогонки

4.     рассмотрели на примере решение СЛАУ методом прогонки.
Список литературы

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

1. Реферат на тему Odyessy
2. Курсовая Содержание, принципы, назначение и цели бухгалтерского управленческого учета
3. Реферат на тему Строение мышц
4. Реферат на тему A Study Of Jack Londons Belief In
5. Реферат Делопроизводство 9
6. Реферат Промежуточная бухгалтерская отчётность предприятия
7. Реферат на тему Nissan SR20DE Engine Essay Research Paper For
8. Реферат Манипулирование сознанием
9. Реферат Бизнес-план пиццерии 2
10. Реферат Поняття злочину причетність до злочину