- •Методические указания
- •Часть 1
- •1. Численное решение нелинейных уравнений.
- •1.1. Метод деления отрезка пополам.
- •1 Input a, b, e
- •1.2. Метод Ньютона (метод касательных).
- •Input X, e
- •1.3. Метод простой итерации.
- •Input X, e, m
- •2. Методы решения систем линейных
- •2.1. Метод Гаусса.
- •2.2. Метод прогонки.
- •2.3. Метод простой итерации (метод Якоби).
- •2.4. Метод Зейделя.
- •3. Численные методы решения систем
- •3.1. Метод простой итерации (метод Якоби).
- •3.2. Метод Зейделя.
- •Input X,y, m1,m2
- •Input tt
- •3.3. Метод Ньютона.
- •Input X, y
- •Input tt
- •4.1. Приближение функции по методу наименьших
- •I XI xi2 yi xiyi
- •I XI xi2 xi3 xi4 yi xiyi xi2yi
- •4.2. Интерполяционный полином
- •4.3. Интерполяционный полином
- •Литература
2.2. Метод прогонки.
Является частным случаем метода Гаусса и применяется для решения систем уравнений с трех диагональной (ленточной) матрицей. Такая система уравнений записывается в виде:
aixi-1+bixi+cixi+1 = di i = 1, 2, 3, ..., n (2.6)
a1= 0; cn = 0.
Формула обратного хода записываем в следующем виде:
xi = Ui xi+1 + Vi ; i = n, n-1,..,1 (2.7)
Уменьшаем в формуле (2.7) индекс на единицу и подставляем в (2.6):
xi-1 = U i -1xi + Vi-1,
ai (Ui-1xi + Vi-1) + bixi + cixi+1 = di
Приведем подобные и запишем:
(aiUi-1 +bi)xi =-cixi+1 + di -aiVi-1,
xi =-ci /(aiUi-1+ bi)xi+1+ (di - aiVi-1)/(aiUi-1 + bi) (2.8)
сравнивая (2.7) и (2.8), получим:
Ui = -ci / (bi + aiUi-1);
Vi = (di - aiVi-1) / (bi + aiUi-1); i = 2, 3, ..., n (2.9)
Поскольку a1 = 0, то
U1 = -c1 / b1; V1 = d1 / b1. (2.10)
Теперь по формулам (2.9) и (2.10) можно вычислить прогоночные коэффициенты Ui и Vi (i=1,2,3,...,n). Это прямой ход прогонки. Зная прогоночные коэффициенты по формулам (2.7), можно вычислить все xi; i=n,...,3,2,1 (обратный ход прогонки). Поскольку cn = 0, то Un = 0 и xn = Vn. Далее вычисляем xn-1, xn-2, ..., x2, x1.
Пример: Решить систему уравнений методом прогонки:
10x1 + x2 = m+5
-2x1 + 9x2 + x3 = n+9 m -1
0,1x2 +4x3 -x4 = 4 n+0,1 m -5
-x3 +8x4 – x5 = 40 -n – L
x5 = L,
где значения m - номер варианта, n - номер группы, L – номер факультета.
Решение: Даны значения ai; bi; ci; di; m=0, n=0, L=0; i=1, 2, 3, 4, 5. Их записываем в виде таблицы 2.1.
Таблица 2.1
-
i
ai
bi
ci
di
1
0
10
1
5
2
-2
9
1
-1
3
0,1
4
-1
-5
4
-1
8
-1
40
5
0
1
0
0
Прямой ход прогонки. По формулам (2.9) и (2.10) определяем прогоночные коэффициенты Ui и Vi (i=1,2,3,4).
U1=-c1/b1=-1/10=-0,1
V1=d1/b1=5/10=0,5
U2= -c2 /(b2 + a2U1)=-1/(9+2·0,1)= -0,1087
V2 = (d2 - a2V1)/(b2 + a2U1)=(-1+2·0,5)/(9+2·0,1)=0
U3= -c3 /(b3 + a3U2)=1/(4-0,1·0,1087)= 0,25068
V3 = (d3 - a3V2)/(b3 + a3U2)=(-5-0,1·0)/( 4-0,1·0,1087)= -1,25341
U4= -c4 /(b4 + a4U3)= 1/(8-1·0,25068)= 0,1290436
V4 = (d4 - a4V3)/(b4 + a4U3)=(40-1·1,25341)/(8-1·0,25068)= 5
U5= -c5 /(b5 + a5U4)=0
V5 = (d5 – a5V4)/(b5 + a5U4)=(0-0·5)/(1+0·0,1290436)= 0
Обратный ход прогонки. По формулам (2.7) вычисляем все xi; i=4,3,2,1). Поскольку cn = 0, то x5 = V5 = 0.
Далее вычисляем x4, x3, x2, x1.
x 4 = U4 x5 + V4 =0,1290436 · 0+5=5
x 3 = U3 x4 + V3 =0,25068·5-1,25341=0
x2 = U2 x3 + V2 =-0,1087·0+0=0
x1 = U1 x2 + V1 =-0,1·0+0,5=0,5
Вычисляем невязки ri = di - aixi-1 - bixi - cixi+1; i=1, 2, 3, 4, 5.
r1 = d1 - b1x1 - c1x2 = 5 -10·0,5 – 1 · 0=0
r2 = d2 - a2x1 - b2x2 - c2x3 = -1+2·0,5 - 9·0 - 0=0
r3 = d3 - a3x2 - b3x3 - c3x4 = -5-0,1 · 0 -4 · 0 +1 · 5=0
r4 = d4 - a4x3 – b4x4 – c4x5 = 40 +1 · 0 -8 · 5 +1 · 0 =0
r5 = d5 – a5x4 – b5x5 = 0 -0 · 5 -1 · 0 = 0
Алгоритм метода прогонки заключается в следующем:
Ввести ai; bi; ci; di; i=1, 2, 3, ..., n.
Выполнить прямой ход, т.е. вычислить Ui и Vi; i=1, 2, 3, ..., n.
Выполнить обратный ход прогонки, т.е. вычислить xi=Ui · xi+1+Vi;
i=n, n-1,...,1.
Напечатать xi; i=1, 2, 3, ..., n.
Вычислить невязки ri = di - aixi-1 - bixi - cixi+1; i=1, 2, 3, ..., n.
Напечатать ri ; i=1, 2, 3, ..., n.
На рис. 2.1 приведена программа решения методом прогонки.
REM LR-2-2, m=13, n=5
DIM A(5), B(5), C(5), D(5), U(5), V(5), X(6), R(5)
DATA 0, 10, 1, 5
DATA -2, 9, 1, -1
DATA 0.1, 4, -1, -5
DATA -1, 8, -1, 40
DATA 0, 1, 0, 0
FOR I =1 TO 5
READ A(I), B(I), C(I), D(I)
U(I) = -C(I) / (A(I)*U(I-1) + B(I))
V(I) =(D(I)-A(I)*V(I-1)) / (A(I)*U(I-1) + B(I))
NEXT I
X(5) = V(5)
FOR I =4 TO 1 STEP -1
X(I) = U(I)*X(I+1) + V(I)
NEXT I
FOR I =1 TO 5
R(I) = D(I)-A(I)*X(I-1)-B(I) *X(I)-C(I)*X(I+1)
PRINT X ; I; = ; X(I); R; I; R(I)
NEXT I
Рис.2.1. Программа решения методом прогонки.