Android-приложение для поиска дешевых авиабилетов: play.google.com
Главная -> Справочник по алгоритмам

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [20] 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78

§ 3.5. Операции с матрицами

Матрица - двумерный массив чисел вида

Си ai2 ai3

021 022 23

- atn агп

Omi От2 ami а„

(3.5)

Матрица характеризуется размерностью тХп, т. е. произведением числа столбцов п на число строк т. Квадратная матрица имеет m = n и размерность п - пХп. У простейших ПЭВМ предусмотрено формирование одной-двух матриц размерностью 10X10 с коэффициентами A/j (например, у ПЭВМ класса Роске! Computers FX-702P можно формировать одну матрицу 10X20 или две матрицы 10X10, причем нумерация строк и столбцов начинается с О, а не с 1). У более сложных ПЭВМ коэффициенты матрицы могут задаваться любой переменной, например B,j, Zi и т. д.

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

1. Задаем значения / от 1 (или 0) до М (или М-I) во внешнем цикле.

2. Задаем значения J от 1 (или 0) до Л (или Л- 1) во внутреннем цикле.

3. С помощью оператора INPUT задаем ввод А (/, У) каждого члена матрицы.

Перед операторами ввода матрицы необходимо задать размерность массива, например, с помощью операторов DIMA (М, N), СОМА (М, N) или других (зависят от конкретной версии бейсика, применяемой в ЭВМ).

Программа 3.41.

IS REMВВОД ЭЛЕМЕНТОВ МАТРИЦЫ МжЫ

ге ХНРИТВВЕДИТЕ М.-Н М..Ц: BIM AtM.-N)

30 FOR 1=1 ТО MiFOR J=l TO N

40 PRIHT!2.0.ВВЕДИТЕ ЭЛЕМЕНТ AI.-.J

50 INPUT A<I.-J:»:NEXT -J:NEXT I

500 END .

В ЭВМ с версией бейсика, имеющей матричные операторы, программа ввода существенно упрощается (см. пример в § 2.2).

Диагональная матрица является разновидностью квадратной матрицы вида

0 ..

022 ••

о" ..

• а„„

У нее все элементы нулевые, кроме диагональных, т. е. Л(/, 1)фО при /=/. Программа 3.42.

Единичная матрица - разновидность диа тональной матрицы, у которой Л (/, У) = 1 при / = /.

Программа 3.43.

10 REMФОРМИРОВАНИЕ ЕДИНИЧНОЙ МАТРИЦЫ

20 INPUTВВЕДИТЕ N=H:DIM ACHrN)

38 FOR 1=1 ТО NSPOR J=i TO N

40 IF lOJ THEN 68

50 LETA<bJ)=l:60T0 ?0

60 LETA<I..J)=0

70 NEXT .JjNEXT I

500 ENB

Нулевая матрица - очищенный массив, т. е. матрица, у которой все Л(/, /)=0 Для получения такой матрицы иногда могут использоваться специальные операторы полной очистки памяти данных (например, VAC у ПЭВМ FX-702P), исполняемые до ввода всех исходных данных. Если нулевую матрицу нужно формировать по ходу вычислений, можно использовать следующую программу:

Программа 3.44.

10 REMФОРМИРОВАНИЕ НУЛЕВОЙ МАТРИЦЫ 20 1НРиТВВЕДИТЕ fl-N M/NjBIM нОЬЮ 30 FOR 1=1 ТО M!FriR J=l ТО N 40 LETA<bJ)=0:NEXT -J: NEXT I 500 END

Операции с константами сводятся к сложению или вычитанию элементов матрицы Л (/, У) с константой, например X, или умножению А (J, J)*X или делению Л (/, J)/X на константу. Все они могут проводиться в ходе ввода матрицы (см. программу 3.45).

Программа 3.45.

10 PRINTУМНОЖЕНИЕ.МАТРИЦЫ НжЫ

15 PRINT-"НЙ КОНСТАНТУ С

20 INPUTВВЕДИТЕ Н=Н

25INPUTВВЕДИТЕ ССИИМ ЧСИ,Н)

30 FOR 1=1 ТО N! FOR .1=1 ТО N 48 PRINT2.0!ВВЕДИТЕ ЭЛЕМЕНТ Й1.J 50 INPUT A-;i...j:)!LETAa.-.J>=u.;b.n*r:

60 NEXT .J г NEXT I

500 END

Вывод матрицы на печать анизуется, как м ввод, с помощью двух циклов. Однако вместо оператора ввода во внутреннем цикле используется оператор вывода PRINT. Целесообразно вывод организовать так, чтобы индицировались индексы / и У каждого элемента в формате без дробных частей (см. пример вывода для программы 3.45).

Программа 3.46.

10 REMФОРМИРОВАНИЕ ДИАГОНАЛЬНОЙ МАТРИЦЫ

20 INPUTВВЕДИТЕ N=N!riIM ACNN)

30 FOR 1=1 ТО NiFOR J=l TO N

40 IF lOJ THEN 60

50 PRINT!2.@!ВВЕДИТЕ AI,J

55 INPUT AC I, J) .-GOTO 70

60 LETA<ItJ)=@

70 NEXT J:NEXT I

70 FOR 1=1 TO H:F0R J=1 TO N 88 PRINT!2.0!A lrJ=MlfS> 90 NEXT JsHEXT I 500 ENIi

Пример. Для X = 2 и матрицы

1 2 3

Л= 4 5 6 7 8 9

see END

выполнение совместно программ 3.45 И 3.46



даст такие результаты (элементы выводится построчно):

; Для матриц небольшой размерности вывбд можно задать и в естественном для матрицы виде.

Программа ЗА7.

70 PRINT ft<:i,l>jA<lj2>rAtb3:i 80 PRINT A;27l>,ft;2f2>,ft<2j3) 90 PRINT йе;Зг1)тА<3:.-г>..А<3/3) 500 END

Пример. Для привёяенного вйше примера совместное выпшнЬнИе программ 3.45 н 3.47 ведет к выдаче результатов в форме

2 4 6. 8 ТО 12 14 16 18

Транспонированной матрицей Л называется квадратная матрица, у которой столбцы соответствуют строкам кваДратно!и матрицы Л, например:

4 5 6

Нетрудно заметить. Что диагональные элементы у матриц Л и Л-одни и-те же и операция транспонирования матрицы А сводится к перестановке остальнрх элементов симметрично относительно диагонали. Это реализуется с помощью соотношения a,i = ai, при i¥= i

Программа. 3.48,

для матрицы 2X2,

D = а-г) 022033+«Сйв1.1+а 1 гйгзВз f -

-oaiayaaia -e32a2saii -tfeiaiseM .для матрицы 3X3-и

D = (а,,022-aviai) (азза,,~--оз,а4} + + <ai3a2i - апогз) Саз2а44~И34В4г) + +(апа24 - аиаг>) {азгщз-аза) + -f (012023-iar30ji)(03fa44~as4a4i)-f +(auaxt - oi 2024) (asi043 - аззощ) + -F(a(30s-4 -<Jf4a2j) (03142-азда4)

для -млйтрицы 4 X 4. Програйма 3.49. Пример.

1 2

3 4

= -2

Программа 3.&0. Пример.

1 2 3 D=- 4 5 .6 7 8-9

Программа 3.51. .

Пример.

= S4.

= 13.

Определители матриц с любой размерностью пХп вычиеляютсяпо методуРаусса. Он сводится к преобразовайию матриц к треугольному виду с пЬмощьЮ слбдунПцих формул преобразования элементов Матрицы А (3.5):

где /г = 1, 2. .... (п -Т) и ай~"г?0.-ПресЗбра-зование- массива А (п, п) производится в на--правлении расположения столбцов слева

10 PRINTТРАНСПОНИРОВАНИЕ МАТРИЦЫ

20 INPUTВВЕДИТЕ N=N5 DIM А<:Н»Н>гВ<Н/И>

30 FOR 1=1 ТО NSFOR J=l ТО Н

4й PRINTi£.0!BBE.!lMTE А1,J: INPUT AOrJ)

50 NEXT JsNEXT I

60 FOR 1=1 TON!FOR J=I-«-l TO N

70 LETC=A(Ь J):LETA< Ь J>=A(I>!LETACI)=C

ад №МПРАНСПОННРОВАННАЯ МАТРИЦА ЗАНЕСЕНА НА МЕСТО ИСХОДНОЙ 500 END

Определитель квадратной матрицы А - число D, равное сумме п\ членов (-Г)а,-а2,-20:);з...а,„„, каждый из которых соответствует одному из "! различных упо,-

.рядоченных множеств j\, jj...../„. получеи-

• кых г-парными перестановками элементов из множества 1. 2.....п.

Определители матриц малой размерности (2X2, -3X3, 4X4) целесообразно вычислять по известным формулам;

D - a\\ai2-a2ia\2

направо. Определитель вычисляется как произведение всех диагональных "элементов преобразованной матрицы. Программа 3.52.

Проверка программы производится rio примерам, приведенным выше для программ 3.49 и 350.

Необходимое -условие для реализации простого метода Гаусса заключается в •неравенстве элемента cLt."" -нулю на всех этапах преобразования. В случае й5&""* = 0 произойдет останов ЭВМ, так как дбяение



Программа 3.50.

10 PRINTВЫЧИСЛЕНИЕ ОПРЕДЕЛИТЕЛЯ ЗжЗ

20 INPUTВЕДИТЕ Й1ЬЙ12,Й13 ЙгВ,С

30 INPUTВВЕДИТЕ йгЬЙ22тЙ23 ВлЕгЕ

40 ХНРиТВВЕДИТЕ A31rft32jA33 G,H,I

50 LETS=fti«<E*I-H-*F>+C*<rr«H-G»iE>+B-*<F*6-Di*I>

60 PRINTОПРЕДЕЛИТЕЛЬ D=S!END

Программа 3.51 - .

18 PRINTВ1.1ЧИСЛЕНИЕ ОПРЕДЕЛИТЕЛЯ 4*4

15 DIM ft<4r4)!LETS=0

20 FOR 1=1 TO 4!FOR J=l TO 4

30 PRINTBBEflHTE ЭЛЕМЕНТ Я=!2.6! I.- J

48 INPUT A<bJ>!NEXT JsNEXT I

50 LET0=1!LETP=2SLETQ=3:LETR=45GOSUB 120

60 LET0=3:LETP=1!LETG!=2:LETR=4:6GSUB 120 •

70 LET0=1!LETP=4!LETQ=2!LETR=3!60SUB 128

88 LET0=2SLETP=3!LETG!=1!LETR=4:60SUB 120

90 LET0=4!LETP=2!LETS=i:LETR=3:60SUB 120 .

100 LET0=3!LETP=4:LETG!=1!LETR=2-.G0SUB 120

lie PRINT.Fl.S!ОПРЕДЕЛИТЕЛЬ Ii=S!STOP

120 LETB=ft<Ь0>жй-:2,P>-ft<ЬР>жн<2.0>

138 LETS=S+B*<A<3..G!>«ft<4,R>-A<3*R)*A<4fG)).

140 RETURN:END

Программа 3.52.

10 PRINTВЫЧИСЛЕНИЕ ОПРЕДЕЛИТЕЛЯ

28 INPUTВВЕДИТЕ ПОРЯДОК ОПРЕДЕЛИТЕЛЯ N=N :

30 DIM Й<:НлН):иЕТР=1 48 FOR 1=1 TO NSFOR J=l TO N ,

50 PRINT! 2.0ВВЕДИТЕ ЭЛЕМЕНТ ftI J -

60 INPUT fta,.J>!NEXT .JSNEXT I i

70 FOR 1=1 TO N-1!F0R J=I+1 TO N

88 LETft<JfI)=ft<J/I>/ft<I,I)!FOR K=I+1 TO N ; I

90 LETft<JjK)=ft<.J,K)-ft<J.. 1)ЖЙ<ЬК)!НЕХТ К :

108 NEXT JsLETP=P*ft<I.. I)!NEXT:I i

110 LETP=P*;ft<N/N)spRINT!Fl.9! ОПРЕДЕЛИТЕЛЬ DPsEHD:

Программа 3.53. i . .. i ,

10 PRINTВЫЧИСЛЕНА ОПРЕДЕЛИТЕЛИ ПО МЕТОДУ ГАУССА!

15 PRINTС ВЫБОРОМ ГЛАВНОГО ЭЛЕМЕНТА ПО ВСЕЙ МАТРИЦЕ:

20 INPUTЗАДАЙТЕ ЗНАЧЕНИЕ H=N!piM й<.ИгЮ

25 FOR 1=8 ТО N-1SF0R J=0 ТО N-1 i

30 РК1НТ!2.0!ВВЕДИТЕ ЭЛЕМЕНТ AI + li.J+l=

40 INPUT A<bJ>!NEXT JsNEXT I:LETP=0

50 LETZ=l!LETD=i:FOR K=0 TO N-2

68 LETE=8SF0R I=K TO N-1

70 FOR J=K TO N-1: IF ABS;E>>=ABS<A<b J>) THEN 98 80 LETE=A<:if.J>:LETB=l:LETC=.j!NEKT J:NEXT I 90 IF K=B THEN 120 100 FOR J=K TO N-l!LETS=A<:Kf J) • 110 LETA<:Kr-J)=A«LB.J)!LETA<B.-J>=S!HEXT J:LETZ=-Z 120 IF K=C THEN 150 125 FOR I=K TO N-1 1

130 LETS=ft<bK>:LETA<bK>=ftai.C.i •. .

140 LETA<bC>=S!NEXT I:LETZ=-Z ; 150 FOR I=K+1 TO N-i:LET&=A<bK>-A<KrK> 160 FOR J=K TO N-l!LETA<ii.J>=Aa.-J)-6:«A«LK.J> 178 NEXT JSNEXT IsNEXT К ;

180 FOR 1=0 TO N-1sLETD=D-*A<Ij.!S

190 NEXT I !LETD=D.4sZ SPRINTОПРЕДЕЛИТЕ ЛЬ D=!F1.9!ri!END

10 PRINTВЫЧИСЛЕНИЕ. ОПРЕДЕЛИТЕЛЯ 2*2

20 INPLfTВВЕДИТЕ й11гЙ12Й2Ьй22 ft/B..C>Ii

38 PRINTОПРЕДЕЛИТЕЛЬ D=fi«D-C*BSENIi



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [20] 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78



0.0132
Яндекс.Метрика