|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Матричные операции над векторами и матрицами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. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.) |