Главная » Basic » МАТРИЧНАЯ АЛГЕБРА

0

Операторы МАТ обеспечивают выполнение всех основных операций над матрицами.

5.4.2.  МАТРИЧНАЯ АРИФМЕТИКА

В отличие от обыкновенных арифметических операций, Бейсик не допускает сложных выражений с матричными   операциями.   Каждая   строка   должна   содержать   одну   матрицу   слева   от   знака

присваивания (=) и одну или две матрицы справа в зависимости от типа операции. В  операторах МАТ можно указывать как матрицы, так и векторы. В табл. 7.1 собраны  существующие формы арифметических операций над матрицами.

Таблица 7.1. Матричная алгебра. Переменные А, В и С могут быть векторами или матрицами; к -

простая переменная, числовое выражение или константа                                      

Оператор     Действие                           Комментарий

МАТ А=В    Копирование элементов В в А

При   переопределении размеры  А заменяются на размеры В

МАТ А=В+С

МАТ А=В-

С

МАТ А=(к)*В

МАТ А =

В*С

Поэлементное сложение В и С и копирование результатов в А Поэлементное вычитание В и С и копирование результатов в А Умножение каждого элемента В на скалярное значение к и копирование результатов в А Матричное умножение В и С в соответствии с правилами матричной алгебры

В и С должны  иметь одинаковые размеры

В и С должны  иметь одинаковые размеры

Скобки обычно обязательны

Число  столбцов у  В должно равняться числу строк у С

Оператор  копирования,  или  замещения,  МАТ  А  =  В  присваивает  значения  элементов   B(I,J) соответствующим элементам A(I,J). В некоторых системах размеры А переопределяются так, чтобы они совпадали с размерами В. Эквивалентная этому оператору программа имеет следующий вид:

Операторы сложения и вычитания МАТ А = В+С и МАТ А= В-С требуют, чтобы В и С  имели одинаковые размеры, и присваивают каждому элементу A(I,J)   значения В (I, J) +C(I,J) и  В (I,J)— C(I,J) соответственно. Программа

для сложения матриц имеет вид

Присваивание после выполнения этих арифметических функций может вызвать  переопределение размеров А.

При скалярном умножении каждый элемент матрицы умножается на скалярное значение. Например,

оператор

МАТ А =(22.5)*В

вызывает  присваивание  каждому  элементу  A(I,J)  значения  22.5*B(I,J).  В  некоторых   системах требуется,  чтобы  скалярное  значение  было  заключено  в  скобки;  в  других  системах  скобки  не обязательны,  но  рекомендуются  во  избежание  путаницы  с  умножением  матриц.  Приведем  еще несколько примеров скалярного умножения:

МАТ А=(Х)*В

MAT A= (SQRT(T) +Y(Z)) *B

Оператору МАТ А = (22.5) * В эквивалентна программа

Матричное умножение является более сложным. Элементы МАТ А=В*С задаются выражением

A(I,J) =B(I,1) *C(1,J) +B(I,2) *C(2,J)+ … +B(I,M) *C(M,J)

=MΣK=1       B(I,K)*C(K,J)

равным   скалярному   произведению   I-й   строки   матрицы   В   на   J-й   столбец   матрицы    С.

Матрицы В и С не обязаны быть квадратными или иметь одинаковые размеры; требуется  лишь совпадение числа столбцов у матрицы В с числом строк у матрицы С. Это условие  вытекает из следующего соотношения для размеров:

размеры

А

=

В

*

С

(L*N)

(L*M)

(M*N)

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

Размеры   3*3                       3*2                  2*3

Ниже показаны примеры допустимых комбинаций (элементам матриц значения даны до умножения)

:

10 DIM А (2,2) , В (2,3), С (3,2) , D (3), Е (2)

100 МАТА = В*С

110 MAT E = B*D

120 MAT E = D*C

130 MAT D = E*B

140 MAT D = C*E

В строке 110 вектор D рассматривается как матрица с размерами 3*1, т. е. как вектор-столбец,  и результат Е имеет размеры 2*1 и тоже является векто-

ром-столбцом. Но в  строке 120 вектор D рассматривается как матрица с размерами 1*3, т. е.  как вектор-строка, и результат Е имеет размеры 1*2, что отвечает вектору-строке. Как уже упоминалось, система не различает эти два типа векторов. Следующая программа служит  примером умножения матриц:

Сложные операции, например 10 MAT A = (3)*B + C-D

в одной строке не допускаются и требуют преобразования в последовательность операторов

10 МАТ А = (3)*В 20 МАТ А = А + С 30  MAT A = A-D

Учтите,  что  деление  матриц  не  определено;  соответствующее делению  действие может   быть получено умножением на обратную матрицу.

Одна и та же матрица не должна появляться по обеим сторонам от знака (=) при умножении или при транспонировании, вероятно, из-за  того,  что  в   таком  случае  потребовалась бы  дополнительная рабочая область в памяти. Так, операторы

МАТ А = А*А

МАТ А = А*В

MAT A = TRN(A)

недопустимы, в то время как возможны следующие операторы:

МАТ В= А*А

МАТ С=С+А

MAT D=B-D

Источник: Уолш Б.    Программирование на Бейсике: Пер. с англ. М.: Радио и связь, 1988. 336 с: ил.

По теме:

  • Комментарии