Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Теория математической обработки геодезических измерений. Учебное пособие для вузов
.pdf
ck`b` 4. o`p`leŠph)eqjhi qonqna rp`bmhb`mh“
x
x
x
В нашем примере вектор
=−
1 1 045 0 045 1119 0 848, , , ,.
s
()
T
Контрольные формулы легко получить, если выражение (4.62) переписать так:
Re + b
= 0, (4.63)
s
= b − s.
где b
s
Все нечетные строки в этой схеме называются эквивалентными, а все чет-
ные — элиминационными.
Поскольку система эквивалентных уравнений справедлива и для системы
нормальных уравнений (4.62), то получаем контрольные величины для элементов
эквивалентных строк в виде преобразованных алгоритмов столбца s, который преобразуется также, как и столбец b.
Вычитая из (4.62) выражение (4.52), находим
Rx s+=0,
где вектор
xe=−
по-
лучается точно также, как и вектор x, но по суммарному столбцу s. Контрольная
x x
формула приобретает вид
−=1.
jj
Таблица 4.2
x
2
1 2,000 0
2 3,000
3 2,167 0,3333
4 2,616
x
3
0
x
4
−1,000
0,5000
−1,000
0,3333
x
5
0
0
−1,000
0,3333
x
6
0
0
0
0
−1,000
0,1537
0,4615
−1,154
0,4411
5 2,030
bs
0
0
0,045
−,0150
−0,030
0,0138
0,129
−0,0495
−0,109
0,0536
1
0,5000
1,045
−0,3483
0,803
−0,3706
1,591
−0,6082
1,920
−0,9458
Контроль
1
−0,5000
1,045
−0,3484
0,804
−0,3710
1,591
−0,6084
1,921
−0,9462
0,00151
0,00188
X ,0173
−0,0121
0,0346
−0,0258
0,0536
−,9824 −1,0117 −0,9647 −1,0258 −0,9458
,9997 0,9996 0,9993 0,9998 0,9995
Вектор уравненных неизвестных получим таким:
=
3 781 7 244 5 121 4 783 8 449,, ,, ,.
()
(МАТРИЦА Q)
T
Таблица 4.2, а
0,652 0,130 0,304 0,087 0,130 0,996
0,493 0,261 0,217 0,159 1,001
0,609 0,174 0,261 1,001
0,478 0,217 1,001
0,493 1,001
Последний столбец является контрольным.
Сформулируем простые правила вычислений, выполняемых в этой таблице.
Если выполнить порядковую нумерацию строк, опустив элиминационные
строки, то любой элемент, расположенный в i-ой строке и j-ом столбце схемы ра-
71

)`qŠ| II. nqmnb{ leŠnd` m`hlem|xhu jb`dp`Šnb h rp`bmhŠek|m{u b{)hqkemhi
⎡⎣⎤
⎛
⎞
⎛
⎞
x
x
x
⎡
⎤
⎡
⎤
⎡
⎤
вен соответствующему элементу матрицы R плюс сумма произведений уже вычисленных элементов элиминационных строк из столбца i на элементы из столбца j, расположенные над ними (в эквивалентных строках). Неизвестное x
равно
j
числу ji-ой элиминационной строки из столбца b плюс сумма произведений уже
вычисленных неизвестных на расположенные над ними числа из этой же элиминационной строки.
С целью окончательного контроля решения задачи уравнивания по уравнен-
ным отметкам вычисляем вектор
LV
== − − −
0 017 0 012 0 018 0 002 0 014 0 018 0 0 014 0 020, ,,, ,, ,,
()
T
и квадратическую форму
Φ=
=pll0 00187,.
⎦
Как вычисляются элементы обратной матрицы, было иллюстрировано выше.
В традиционном изложении матрица коэффициентов нормальных уравнений
представляется в виде произведения
R = T
, (4.64)
1T2
двух треугольных матриц
10 0
⎜
/ ...
RR
12 11
⎜
=
T
1
. . ... .
⎜
⎜
/ / ...
RR R R
⎝
kk
1 11 2 22
Строки матрицы T
...
10
⎟
⎟⎟
,
⎟
11
⋅
[]
вместе с дополнительными столбцами свободных членов и
2
⎟
⎠
RR R
11 12 1
⎜
⎜⎜
T
=
2
⎜
⎜
⎝
RR
01 1
[]⋅[]
. . ... .
01
...
...
⋅
22 2
. ... ( )
Rk
⋅−
[]
kk
контрольными величинами образуют эквивалентные строки, а столбцы матрицы
T
, с измененными знаками — элиминационные строки.
1
Преобразованные алгоритмы Гаусса (с точкой) раскрываются в общем виде
по формуле
⎡
Ri R
ij ij
⎣
⋅−
⎤
=− −
⎦
RR
i ij
1
R
11
RR
⋅
11
[]
ij k
22
R
[]
⎤
⋅
⎣
⎦
1
⋅
22
R
[]
−−( ) ...1
⋅−
ii kj
⎡
k Rk
() ()
11
⎣
Rk
⋅−
()
[]
kk
1
⋅−
⎤
⎦
.
⎡
Представление (4.64) приводит к двум системам уравнений
=− , Tx y2= ,
Ty b
1
−11
откуда следует, что
y Tb=−
(прямой ход решения) и искомый вектор (обратный
ход)
−21
Ty=
.
T
y b b bk
Вектор
=− ⋅
()
11... ( )
[]
12
⋅−
[]
k
.
Он назывется преобразованным вектором свободных членов. Любой алго-
ритм в этом векторе раскрывается также как и алгоритм с буквой R с тем различием, что второй сомножитель в числителе заменяется алгоритмом с буквой b с той
же цифрой, что и в знаменателе и с тем же индексом после знака точки.
Квадратичная форма
[ ][ ][ ].pvv pll k pls k= ⋅= ⋅
В нашем примере
[],pvv = 0 0019
Неизвестные, начиная с последнего, вычисляются по формулам:
bk
⋅−
()
k
()
⋅−
kk
()
⋅−
j
()
⋅−
jj
1
1
1
1
;
⎦
−
⎤
⎦
()
⋅−
Rj
jk
⎣
⎡
()
⋅−
Rj
jj
⎣
1
⎦
x
⎤
1
⎦
Rj
⎣
....
−
k
⎡
⎣
()
⋅−
()
−
jj
⋅−
Rj
()
jj
1
⎦
x
, (j = k−1, …, 2);
−
j11
⎤
1
⎦
[]
=−
k
Rk
[]
bj
⎣
=−
j
⎡
72
Rj
⎣
k
⎟
k
⎟
.
⎟
⎟
⎠
.

ck`b` 4. o`p`leŠph)eqjhi qonqna rp`bmhb`mh“
x
⎛
⎝
⎞
⎠
⎛
⎞
h
bRR
=− − −... .
1111
k
R
11
R
x
12
x
k1
2
R
11
Заметим, что определитель матрицы коэффициентов нормальных уравне-
ний вычисляется по формуле
мере
R =×× × × =2 3 2 167 2 616 2 030 69 047,,, ,
=⋅ ⋅
[]
11 22
⋅ ⋅−
11... ( ) .
[]
kk
В рассмотренном при-
. Определитель обратной матрицы
RRR R k
QR==1 0 0145/ , .
4.6. leŠnd jb`dp`Šm{u jnpmei
Достаточно точным и эффективным для решения нормальных уравнений и
обращения матриц является метод квадратных корней (Холесского). Как и способ
Гаусса, он основан на последовательном исключении неизвестных.
Запишем симметричную матрицу коэффициентов нормальных уравнений
Rx + b = 0 (4.65)
в виде
RR R
11 12 1
⎜
⎜
R
sim
=
. . ... .
⎜
⎜
⎜
...
RR
...
22 2
k
⎟
k
⎟
⎟
⎟
R
kk
⎟
и представим ее в виде произведения двух треугольных матриц
T
T;
R = T
где верхняя треугольная матрица
R
R
11
⎜
⎜
12
R
...
11
⎜
⋅
1
22
...
⎜
T
=
⎜
⎜
. . ... .
⎜
⎜
⎝
R
[]
R
1
k
R
R
[]
2
k
R
[]
22
⎟
11
⎟
⎟
⋅
1
⎟
.
⋅
1
(4.66)
⎟
⎟
⎟
⋅−
Rk
[]
kk
⎟
))
1
(
⎠
Ясно, что метод квадратных корней требует вдвое меньшую оперативную па-
мять компьютера по сравнению с методом Гаусса.
Элементы матрицы T, записанные в виде алгоритмов Гаусса, вычисляются по
формулам:
tR
= ,
11 11
tR t
=−
jj jj sj
Систему нормальных уравнений теперь представим в виде
t RR
ij j=1 11
−
j
∑
=
s
/,
1
2
,
t R tt t
=−
( /,
jh jh sj sh jj
1
h
∑
s
−
1
=
1
( , , ... ,jk= 23
виде двух систем
jj k=+ +12, ,..., ).
T
T Tx b
+=0
, или в
73

)`qŠ| II. nqmnb{ leŠnd` m`hlem|xhu jb`dp`Šnb h rp`bmhŠek|m{u b{)hqkemhi
x
x
x
i
x
⎛
⎝
⎞
⎠
x
Tx y= ,
Ty b
(4.67)
T
+=0.
(4.68)
Элементы вектора y вычисляются по формулам:
j
−
1
y b ty t
=−
=− /
y bt
1 1 11
( )/ .
j j sj s jj
,
∑
s
=
1
Вычисление элементов матрицы T и вектора y представляет собой прямой ход
решения.
Обратный ход заключается в вычислении неизвестных, начиная с последнего
k
y tx t
=− −
yt
=− /,
k k kk
( )/ .
j j js s jj
∑
sj
=+
1
При ручном счете для контроля вычислений вводится суммарный столбец с
k
s Rb
элементами
s
точно так же, как столбец b в столбец y. Так же, как и неизвестные по столб-
=+
∑
i ij i
j
=
1
цу s, по мере вычисления x
x
−=1.
ii
,
который в схеме вычислений преобразуется в столбец
вычисляют величины
i
и осуществляют контроль
Можно сформулировать следующие простые правила для вычислений: эле-
менты t
из разности R
нальный элемент t
t
, взятых из столбцов j и h и умножением полученной разности на 1 / tjj; аналогич-
jh
но вычисляют и элементы y
, yj, sj вычисляют последовательно по строкам tjj — как квадратный корень
jjh
После вычисления элементов каждой строки i выполняют контроль
и суммы квадратов всех элементов, расположенных над tjj; недиаго-
jj
получают вычитанием из Rjh суммы произведений элементов
jh
и sj.
j
∑
hi
k
=
tys
+=
ih i i
Можно составить окаймленную матрицу
RB
R
=
T
⎜
BM
если к системе нормальных уравнений присоединить выражение
пример, квадратичную форму
,
⎟
Φ= +M Bx
TT
ΦΔ=+L PL b x
В общем же случае x может быть не
.
вектором, а матрицей. Тогда в схеме решения системы уравнений получим алгоритм Гаусса
Mk.
Φ= ⋅
[]
Приведем пример решения системы трех нормальных уравнений (таблица 4.3).
Таблица 4.3
Матрицы x
1
1. R,b,s 2,583
2.
Tbs,,
1,607
(0,6223)
x
2
−1,167
2,833
−0,726
1,519
(0,6583)
x
3
−0,250
−1,000
1,877
−0,156
−0,733
1,147
bS
1,684
−0,418
−1,942
13,126
1,048
0,226
−1,406
2,850
0,248
−1,315
12,450
1,774
1,013
−0,259
Контроль
(0,8718)
3. x
Контроль 1.000 1,000 1,002
74
−0,333
−1,333
0,443
−0,557
1,228
0,226
10,000 9,999
9,999
T
,
2,850
0,248
−1,315
12,450
1,773
1,013
−0,259
.
на-

ck`b` 4. o`p`leŠph)eqjhi qonqna rp`bmhb`mh“
⎛
⎞
4. Q 0,551
0,311
0,238
0,311
0,610
0,364
0,238
0,367
0,760
Контроль 1,000 1,001 1,001
В этом примере
T
==V PV
10 000,.
M L PL
Любой элемент i,j матрицы
T
==13 126,.
Mk⋅
[]
В конце решения получаем
Φ= ⋅
[]
=Mk
получается вычитанием из элементов Mij
суммы произведений k элементов, соответствующих преобразованным столбцам
в схеме (в нашем случае b и s).
Как видно, матрица Т в памяти компьютера может быть размещена на месте
матрицы R.
Приведенная схема удобна и для обращения матрицы R. Если решение системы
уравнений (4.65) сводится к последовательному решению двух систем (4.67) и (4.66),
то процесс обращения матрицы R заключается в решении k систем RQ
E
соответственно j-е столбцы матриц Q и E, и сводится к решению двух систем
j
T
Zj − Ej = 0, (4.69)
T
TQ
= Zj. (4.70)
j
= Ej, где Qj и
j
Для матрицы Z получим выражение
−
1
TT
−−
= ==
ZTET
t
11
−
⎜
⎜
⎜
⎜
⎝
1
t
22
. ...
?
⎟
⎟
.
⎟
⎟
−
1
t
⎠
kk
Здесь знаком вопроса заменены неизвестные недиагональные элементы ма-
−T
трицы T
лучены, как и вектор x, если столбец Z
Z
,..., Z1.
k−1
. Из системы (4.70) следует, что столбцы Qj матрицы Q могут быть по-
последовательно заменять столбцами Zл,
j
Элементы матрицы Q удобно вычислять по строкам, начиная с последней.
При этом вычисленные элементы Q
i-ой строки следует записывать в j-ый стол-
ij
бец матрицы Q в силу ее симметричности, так что в каждой строке необходимо
вычислять элементы Q
при i ≥ j (по этой причине замененные знаком вопроса эле-
ij
менты матрицы Z вообще не участвуют в вычислениях (способ Ганзена). Так, в
рассматриваемом примере элементы:
Q
33
Q
32
Q
31
Q
22
Q
21
Q
11
2
0 8718 0 760==,,
0 760 0 733 0 6588 0 367= ⋅⋅ =,,, ,,
0 760 0 156 0 367 0 728 0 6223 0 238= ⋅+⋅ ⋅ =(, , , , ) , , ,
0 6588 0 367 0 733 0 6588 0 611= +⋅ ⋅ =(, , , ) , , ,
0 367 0 156 0 611 0 726 0 6223 0 311= ⋅+⋅ ⋅ =(, , , , ) , , ,
0 6223 0 238 0 156 0 311 0 726 0 6223 0 551= +⋅+⋅ ⋅ =(, , , , , ) , , .
После вычисления каждой строки осуществляется контроль
i-ая строка матрицы R.
;
где R
≈1,
RQ
ii
i —
Определитель матрицы Q равен произведению взятых в скобках чисел (см.
k
−
табл. 4.3),
() ,=
Det Qt
1
или в нашем примере
∏
jj
=
1
j
Det Q(),,, ,.=⋅⋅=0 622 0 658 0 872 0 348
75

)`qŠ| II. nqmnb{ leŠnd` m`hlem|xhu jb`dp`Šnb h rp`bmhŠek|m{u b{)hqkemhi
⎝
⎠
⎛
⎝
⎞
⎠
Метод квадратных корней применим не только для решения систем с положительно определенной матрицей. При извлечении квадратного корня из элементов
−=1 i.
t
< 0 используют мнимую единицу
ii
Этот метод можно применять и для
решения систем нормальных уравнений с вырожденной матрицей. В этом случае, если элемент t
≤ ε, где ε — малая положительная величина, то полагают tii = 0.
ii
Соответствующие неизвестные также становятся равными нулю.
Если требуется обратить треугольную матрицу, то ее следует записать на ме-
сто матрицы T в схеме вычислений (или в памяти компьютера) и далее выполнить
преобразование столбцов матрицы −E, записывая преобразованные результаты
последовательно вместо строк матрицы T, то окончательный результат и будет матрицей T
−1
.
Так, обращая матрицу
1 607 0 726 0 156
⎛
⎜
T =
⎜
−−
,,,.
0 1 519 0 733
,,,,
⎞
⎟
−
⎟
0 0 1 147
полученную в таблице 4.2, а, найдем обратную матрицу:
0 622 0 297 0 275
,,,.
−
1
⎜
=
0 0 658 0 420
T
⎜
,,,.
⎟
⎟
0 0 0 872
− −−11
Q R TT
Тогда можно получить матрицу
элемент матрицы Q можно вычислить по формуле
и j относятся к i-ой и j-ой строке матрицы
==
−1
T
T
.
Отсюда следует, что любой
−−
QTT
.
Таким способом можно вычислять
11
=
()(),
ij i j
где индексы i
любые элементы матрицы Q независимо друг от друга, что становится особенно
эффективным, если требуется получить только диагональные элементы или узкую
ленту матрицы Q.
В заключение приведем BASIC-программу обращения ленточной матрицы R
с решением системы нормальных уравнений и обращения треугольной матрицы.
Программа работает в режиме диалога с оператором. Отметим лишь, что полушириной ленты является число ненулевых кодиагоналей матрицы, включая главную
в ее верхнем треугольнике В память компьютера в одномерный массив вводятся
только элементы ненулевых кодиагоналей. Например, для ленточной матрицы
21000
−
⎛⎞
⎜⎟
2 10 0
⎜⎟
R
=−
⎜⎟
⎜⎟
⎜⎟
⎝⎠
−
2 10
21
−
2
(4.71)
полуширина ленты равна 2, и для записи ее элементов необходим одномерный
массив с адресами
12
34
56
78
9
Имеется возможность получить полную обратную матрицу Q или ее ленту той
76
же ширины, что и в исходной матрице. Так, для матрицы (4.71) в результате счета

ck`b` 4. o`p`leŠph)eqjhi qonqna rp`bmhb`mh“
⎛
⎝
⎞
⎠
по программе получим ленту симметричной обратной матрицы (знаком «?» заменены невычисленные элементы):
0 833 0 667
, , ???
⎜
⎜
Q =
⎜
⎜⎜
⎜
При обращении треугольной матрицы всегда получается только полная обратная к ней матрица.
REM $DYNAMIC
OPTION BASE 1
DEFINT A-Z
DEFDBL A-B, D, Q, V-X
DECLARE SUB PAUSE ()
400 COLOR 15, 1: CLS
LOCATE 4, 25: INPUT "ПОРЯДОК МАТРИЦЫ K = "; K: SLEEP 1: F = 1
LOCATE 5, 25: INPUT "ПОЛУШИРИНА ЛЕНТЫ "; Z: Z = Z – 1:
SLEEP 1
LOCATE 7, 21:
INPUT "ОБРАЩЕНИЕ ТРЕУГОЛЬНОЙ МАТРИЦЫ "; TR$: TR$ = UCASE$
(TR$) IF TR$ = "N" THEN
LOCATE 9, 20: PRINT "Если только обращение — введите 1, "
LOCATE 10, 22: INPUT "если с решением системы, то 2 ", F B$
= "F"
IF K < Z + 1 THEN
1 333 1 000
, , ??
1 500 1 000
,, ?
1 333 0 667
,,
0 833
,
⎟
⎟
.
⎟
⎟
⎟
LOCATE 12, 20: PRINT "ПОЛУЧИТЬ ОБРАТНУЮ МАТРИЦУ ПОЛНУЮ
(F),"
LOCATE 13, 17:
PRINT "ИЛИ ЛЕНТОЧНУЮ ПОЛУШИРИНЫ "; Z + 1; " (B) ";: INPUT
B$
B$ = UCASE$ (B$)
END IF
IF B$ = "F" THEN A$ = "A (": GOSUB 600: Z = K: V = K + 1:
GOTO 403
V = Z + 1: H = V * (2 * K – Z) / 2: DIM Q (H), Z (K), X (K):
DET = 1
FOR J = 1 TO K: M = J – Z: IF M <= 0 THEN M = 1
P = J * (J + 1) / 2 – M * (M – 1) / 2: G = P – J: IF J > V
THEN G = P – V
Z (J) = G: H = G
FOR I = M TO J: H = H + 1
411 PRINT „R („; I; „.“; J; „) =“;: INPUT Q$
IF VAL (Q$) = 0 AND MID$ (Q$, 1, 1) <> „0“ THEN BEEP: GOTO 411
Q (H) = VAL (Q$)
NEXT I: PRINT: NEXT J
CLS: LOCATE 4, 20:
77

78
)`qŠ| II. nqmnb{ leŠnd` m`hlem|xhu jb`dp`Šnb h rp`bmhŠek|m{u b{)hqkemhi
INPUT „ЕСТЬ ЛИ ОШИБКИ ПРИ ВВОДЕ МАТРИЦЫ (Y/N) "; A$: A$ =
UCASE$ (A$)
IF A$ = "N" THEN 403
401 PRINT "Введите номер строки I ";: INPUT I: SLEEP 1
PRINT "Введите номер столбца J ";: INPUT J
H = I + J * (J – 1) / 2: IF J <= Z + 1 THEN N = 0: GOTO 402
M = J – Z – 1: N = M * (M + 1) / 2
402 H0 = H – N
PRINT "A ("; I; "."; J; ") =";: INPUT Q (H0)
CLS: LOCATE 4, 30: INPUT "ЕСТЬ ЛИ ЕЩЕ ОШИБКИ "; A$: A$ =
UCASE$ (A$)
IF A$ = "Y" THEN 401
END IF
IF TR$ = "Y" THEN
A$ = "T (": GOSUB 600: Z = K: V = K + 1
H0 = K * (K + 1) / 2: DIM W (H0)
GOTO 500
END IF
403 IF F = 1 THEN DETI = 1: GOTO 405
CLS: DIM B (K + 1), D (K):
LOCATE 2, 20: PRINT "ВЕКТОР СВОБОДНЫХ ЧЛЕНОВ B ": PRINT
FOR I = 1 TO K:
407 PRINT "B."; I; "=";: INPUT Q$
IF VAL (Q$) = 0 AND MID$ (Q$, 1, 1) <> "0" THEN BEEP: GOTO 407
B (I) = VAL (Q$): NEXT I
CLS: LOCATE 4, 20
INPUT "ЕСТЬ ЛИ ОШИБКИ ПРИ ВВОДЕ ВЕКТОРА В (Y/N) "; A$: A$ =
UCASE$ (A$)
IF A$ = "N" THEN 404
B: PRINT "Введите номер I ";: INPUT I: SLEEP 1
PRINT "B."; I; "=";: INPUT B (I)
CLS: LOCATE 4, 30: INPUT "ЕСТЬ ЛИ ЕЩЕ ОШИБКИ "; A$: A$ =
UCASE$ (A$)
IF A$ = "Y" THEN GOTO B
404 INPUT "PLL = "; B (K + 1)
405 DETI = 1: DET = 1
FOR I = 1 TO K: IF I <= V THEN H = Z (I) + I: GOTO 410
H = Z (I) + V
410 HI = Z (I): IF I = 1 THEN 420
N = I + Z – 1: IF N > K THEN N = K
C = Z: FOR J = I TO N: H1 = HI: H2 = Z (J)
IF J <= V THEN C = I – 1: GOTO 415
IF J > I THEN C = C – 1: H1 = HI + J – I
IF I <= V THEN H1 = HI + I – C – 1
415 A = 0: FOR L = 1 TO C: H1 = H1 + 1: H2 = H2 + 1
A = A – Q (H1) * Q (H2)
NEXT L: H0 = H2 + 1: Q (H0) = A + Q (H0)
NEXT J
420 N = I + Z: IF N > K THEN N = K

ck`b` 4. o`p`leŠph)eqjhi qonqna rp`bmhb`mh“
B = SQR (Q (H)): DET = DET * B: Q (H) = 1 / B
IF I = N THEN 435
FOR J = I + 1 TO N: IF J <= V THEN H = H + J – 1: GOTO 430
H = H + Z
430 Q (H) = Q (H) / B: NEXT J
435 NEXT I
H0 = H: DET = DET ^ 2
CLS: IF F = 1 THEN 470
GOSUB 440
470 REM "ОБРАЩЕНИЕ ПО СПОСОБУ ГАНЗЕНА"
Q (H0) = Q (H0) ^ 2:
472 FOR Y = 2 TO K: I = K – Y + 1
IF I <= V THEN HI = Z (I) + I: GOTO 475
HI = Z (I) + V
475 H1 = HI: M = K – Y + V: IF M > K THEN M = K
T = 0: R = K – Y + 1: FOR J = R TO M: T = T + 1
X (T) = Q (H1) * Q (HI): IF J < V THEN H1 = H1 + J: GOTO 480
H1 = H1 + Z
480 NEXT
C = Y: IF Y > Z THEN C = V
S = I + C – 1: IF S <= V THEN HJ = Z (S) + S: GOTO 485
HJ = Z (S) + V
485 FOR J = S TO I STEP – 1: U = S: H1 = HJ
A = 0: FOR L = C TO 2 STEP – 1
A = A – X (L) * Q (H1)
IF U <= J THEN H1 = H1–1: GOTO 490
IF U >= V THEN H1 = H1 – Z: GOTO 490
H1 = H1 – U + 1
490 U = U – 1: NEXT L: Q (H1) = A: HJ = HJ – 1
NEXT J: Q (H1) = Q (H1) + X (1)
NEXT Y: PRINT
IF F = 2 THEN PRINT "Press any key": WHILE INKEY$ = "": WEND:
PRINT
CLS: LOCATE 2, 35: PRINT " МАТРИЦA Q =INV (A) "
H = 0: T = 0: FOR J = 1 TO K: M = J – Z: IF M <= 0 THEN M = 1
FOR I = M TO J: H = H + 1
T = T + 1: TT = T MOD 15
IF TT = 0 THEN PAUSE
PRINT "Q ("; I; "."; J; ") =";: PRINT USING "###.#####"; Q
(H): NEXT: PRINT
NEXT
M$ = "A":
PRINT "DET ("; M$; ") ="; DET / DETI
PRINT: PRINT "Press any key": WHILE INKEY$ = "": WEND
END
440 REM "Вычисление неизвестных"
J1 = 1: FOR J = J1 TO K: H = Z (J)
IF J <= V THEN HJ = Z (J) + J: GOTO 445
HJ = Z (J) + V
79

)`qŠ| II. nqmnb{ leŠnd` m`hlem|xhu jb`dp`Šnb h rp`bmhŠek|m{u b{)hqkemhi
445 B = B (J): IF J = 1 THEN 450
M = J – Z: IF M <= 0 THEN M = 1
FOR I = M TO J – 1: H = H + 1
B = B – Q (H) * B (I)
NEXT I
450 B (J) = B * Q (HJ): B (K + 1) = B (K + 1) – B (J) * B (J)
451 NEXT J:
IF TR$ = "Y" THEN 468
FOR Y = 1 TO K: I = K – Y + 1
IF I <= V THEN HI = Z (I) + I: GOTO 455
HI = Z (I) + V
455 H = HI: B = B (I): IF I = K THEN 462
M = I + Z: IF M > K THEN M = K
FOR J = I + 1 TO M: IF J <= V THEN H = H + J – 1: GOTO 460
H = H + Z
460 B = B – D (J) * Q (H)
NEXT J
462 D (I) = B * Q (HI)
NEXT Y
CLS: LOCATE 2, 30: PRINT "ВЕКТОР НЕИЗВЕСТНЫХ "
465 T = 0: PRINT: FOR I = 1 TO K:
466 D (I) = – D (I): T = T + 1: TT = T MOD 15
IF TT = 0 THEN PAUSE
PRINT „DX.“; I; „=“;: PRINT USING „##.####“; D (I)
NEXT: PRINT
XF = ABS (B (K + 1)): PRINT „PVV=“; XF: PRINT
468 RETURN
80
500 FOR I = 1 TO K: H = I * (I + 1) / 2
DET = DET * Q (H): Q (H) = 1 / Q (H)
NEXT I
FOR W = 1 TO K
ERASE B: DIM B (K + 1): B (W) = 1
GOSUB 440
H = W * (W + 1) / 2
FOR I = W TO K:
Q (H) = B (I): H = H + I
NEXT
NEXT
CLS: LOCATE 4, 25: PRINT „ВЫВОД ОБРАТНОЙ МАТРИЦЫ T (–1) "
H = 0: T = 0: FOR J = 1 TO K: M = J – Z: IF M <= 0 THEN M = 1
FOR I = M TO J: H = H + 1
T = T + 1: TT = T MOD 15
IF TT = 0 THEN PAUSE
PRINT "T ("; I; "."; J; ") =";: PRINT USING "###.#####"; Q
(H): NEXT: PRINT
NEXT
PRINT "DET (T) ="; DET
PRINT: PRINT "Press any key"
WHILE INKEY$ = "": WEND
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
