АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Матричные операции над векторами и матрицами

Читайте также:
  1. Ultra Lift – молодое, подтянутое тело без операции
  2. Активные операции
  3. Активные операции коммерческих банков, их структура.
  4. Акушерские операции при АУТ и КУТ
  5. Арифметические операции с выделениями
  6. Арифметические операции с матрицами
  7. Арифметические операции, типы данных в Maple
  8. Аутсорсинг, как форма кооперации предприятий
  9. Банковские операции.
  10. Булевские вектора и операции для работы с ними
  11. В день операции
  12. Введение в оперативную хирургию. Учение об операции

MATLAB позволяет выполнять мощные групповые вычисления над массивами, используя обычные математические функции, которые в традиционных языках программирования работают только со скалярными аргументами. Групповые операции позволяют компактно задавать выражения, при которых выпололняется гигантский объем работы. Кроме того, матричные вычисления выполняются намного быстрее, чем скалярные.

К матричным действиям с матрицами относятся такие операции, которые используются в матричном исчислении в математике.

Базовые действия с матрицами (векторами) – сложение, вычитание, транспонирование, умножение матрицы на число, умножение матрицы на матрицу, возведение квадратной матрицы в степень – осуществляются в MATLAB с помощью обычных знаков арифметических операций. Условия, при которых эти операции возможны, таковы:

● при сложении или вычитании матриц они должны иметь одинаковые размеры;

● при умножении матриц число столбцов первого множителя должно совпадать с числом строк втрого множителя.

Невыполнение этих условий приводит к появлению сообщения об ошибке.

Приведем несколько примеров действий с матрицами

А =, D =, B =.

>> A=[0 -2 4;3 2 1];D=[-5 4 2;1 3 1];B=[-1 -2 -3;1 3 1;0 2 2];

Пример сложения и вычитания

>> disp(A+D)

-5 2 6

4 5 2

>> disp(D-A)

-5 6 -2

-2 1 0

Пример умножения на число

>> disp(3*D)

-15 12 6

3 9 3

Пример транспонирования матрицы, при котором ее строки становятся столбцами с теми же номерами, а столбцы – строками, осуществляется с помощью оператора апостроф <'>:

>> disp(A')

0 3

-2 2

4 1

В математике транспонированная матрица А обозначается АТ.

Знак <*> закреплен за матричным умножением векторов и матриц в смысле линейной алгебры. При этом число столбцов первой матрицы обязано равняться числу строк второй матрицы. Произведение прямоугольной матрицы An×k (таблицы чисел, расположенных в n строках и в k столбцах) на матрицу Bk×m определяется следующим образом: для того, чтобы получить элемент cij матрицы - произведения C=AB, следует элементы i -й строки матрицы А умножить на соответствующие элементы j -го столбца матрицы В и результаты сложить, т. е.

cij =.

Матрица С = Сn×m занимает n строк и m столбцов.

Пример умножения матрицы на матрицу

>> C=A*B

C =

-2 2 6

-1 2 -5

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

является строкой, а второй – столбцом. Иначе говоря, если векторы Х и У являются строками, то математический смысл имеют только две формы умножения этих векторов: U=X*Y' и V=X'*Y. Причем в первом случае результатом будет скалярное произведение векторов Х и У (число), а во втором – внешнее произведение векторов Х и Y (квадратная матрица). Пример:

>> x=[1 2 3];y=[4 5 6];

>> v=x*y'

v =

>> v=x'*y

v =

4 5 6

8 10 12

12 15 18

Скалярное произведение двух векторов возвращает функция dot.

>> s=dot(x,y)

s =

Векторное произведение. Для трехкомпонентных векторов в MATLAB существует функция cross, которая позволяет найти векторное произведение двух векторов. Пример:

>> v1=[1 2 3];v2=[4 5 6];

>> cross(v1,v2)

ans =

-3 6 -3

Функция det(B) – вычисляет определитель│ B │ квадратной матрицы B.

>> d=det(B)

d =

-6

Функция обращения матрицыinv(B) – вычисляет матрицу, обратную заданной матрице B. Исходная матрица B должна быть квадратной, и ее определитель не должен быть равен нулю.

Пример:

>> B1=inv(B)

B1 =

-0.6667 0.3333 -1.1667

0.3333 0.3333 0.3333

-0.3333 -0.3333 0.1667

Матрица, обратная матрице В, обозначается В-1 и удовлетворяет соотношениям -1)-1 = B, ВВ-1 = В-1В = E, где E – единичная матрица того же порядка n, что и B.

Проверим правильность результата выполнения операции обращения матрицы B:

>> disp(inv(B1))

-1.0000 -2.0000 -3.0000

1.0000 3.0000 1.0000

0 2.0000 2.0000

В результате получили матрицу B, т.е. соотношение -1)-1 = B выполняется.

>> disp(B*B1)

1.0000 0 0

-0.0000 1.0000 -0.0000

0 0 1.0000

>> disp(B1*B)

1.0000 0 0

0 1.0000 0

0 -0.0000 1.0000

В результате получили единичную матрицу Е, т.е. соотношения ВВ-1 = В-1В = E также выполняются.

Примеры возведения квадратной матрицы в степень

>> disp(B^2)

-1 -10 -5

2 9 2

2 10 6

>> disp(B^-1)

-0.6667 0.3333 -1.1667

0.3333 0.3333 0.3333

-0.3333 -0.3333 0.1667

При возведении матрицы в целую положительную степень происходит матричное умножение матрицы на саму себя столько раз, каков показатель степени, в отличие от поэлементного возведения матрицы в степень при помощи оператора <.^> (см. раздел 2.7). Для отрицательных степеней вычисляется степень обратной матрицы.

Возможно использование дробных степеней. Извлечем из матрицы B кубический корень D=.

>> D=B^(1/3)

D =

0.5355 + 0.7217i -0.3647 - 0.0000i -0.7244 + 0.7217i

0.2356 - 0.2165i 1.4422 0.2356 - 0.2165i

-0.0355 + 0.1443i 0.3647 1.2244 + 0.1443i

Проверим результат возведением в куб.

>> D^3

ans =

-1.0000 + 0.0000i -2.0000 - 0.0000i -3.0000 + 0.0000i

1.0000 - 0.0000i 3.0000 - 0.0000i 1.0000 - 0.0000i

0.0000 + 0.0000i 2.0000 + 0.0000i 2.0000 - 0.0000i

>> real(ans)

ans =

-1.0000 -2.0000 -3.0000

1.0000 3.0000 1.0000

0.0000 2.0000 2.0000

Соотношение D3= B выполняется, т.е. кубический корень D= найден верно.

Если требуется извлечь квадратный корень из матрицы, то лучше применить встроенную функцию sqrtm. Матричные экспонента и логарифм вычисляются при помощи функций expm и logm.

В MATLAB вводятся две новые функции (они не относятся к традиционным математическим операциям над векторами и матрицами) деления матриц слева направо и справа налево. Первая операция записывается при помощи знака < / >, а вторая – при помощи знака < \ >, которые помещаются между именами матриц – делимого и делителя. Операция B/A эквивалентна операции B*inv(A) и ее удобно использовать для решения матричного уравнения

X*A=B,

а A\B эквивалентна inv(A)*B и является решением матричного уравнения

A*X=B.


1 | 2 | 3 | 4 | 5 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.)