Разное

Умножение матриц матлаб: Основы программирования в MatLab

Основы NumPy: массивы и векторные вычисления

 

 

 

Матричные вычисления, такие как умножение матриц, построение разложений матриц, вычисление определителя и др. являются важной частью любой библиотеки программ для численных расчетов. В отличие от некоторых языков программирования, таких как MATLAB, в NumPy операция * — это поэлементное умножение матриц, а не стандартное умножение матриц из линейной алгебры. В связи с этим в NumPy для умножения матриц реализована функция dot как в виде метода объекта типа ndarray, так и в виде функции из пространства имен numpy:

In [156]: x = np.array([[1., 2., 3.], [4., 5., 6.]])
In [157]: y = np.array([[6., 23.], [-1, 7], [8, 9]])
In [158]: x
Out[158]: 
array([[1., 2., 3.],
       [4., 5., 6.]])
In [159]: y
Out[159]: 
array([[ 6., 23.],
       [-1.,  7.],
       [ 8.,  9.]])
In [160]: x.dot(y)
Out[160]: 
array([[ 28.,  64.],
       [ 67., 181.]])

Выражение x. dot(y)

эквивалентно np.dot(x, y):

In [161]: np.dot(x, y)
Out[161]: 
array([[ 28.,  64.],
       [ 67., 181.]])

Произведение матрицы на согласованный одномерный массив дает одномерный массив:

In [162]: np.dot(x, np.ones(3))
Out[162]: array([ 6., 15.])

Операция @ также выполняет умножение матриц:

In [163]: x @ np.ones(3)
Out[163]: array([ 6., 15.])

Модуль numpy.linalg стандартный набор функций для разложения матриц, а также вычисления определителя и обратной матрицы. Они реализуются с помощью тех же стандартных библиотек линейной алгебры, которые используются в других языках (например, MATLAB и R), таких как BLAS, LAPACK, или, возможно (в зависимости от вашей сборки NumPy), проприетарной Intel MKL (Math Kernel Library):

In [164]: from numpy.linalg import inv, qr
In [165]: X = np.random.randn(5, 5)
In [166]: mat = X.T.dot(X)
In [167]: inv(mat)
Out[167]: 
array([[  1.17126787,   0.
63442101, -0.43366495, 0.12451843, -0.43842659], [ 0.63442101, 20.97155103, 4.85020898, 1.20337434, -25.85438743], [ -0.43366495, 4.85020898, 1.82425292, 0.15709542, -6.39429734], [ 0.12451843, 1.20337434, 0.15709542, 0.33177322, -1.54477735], [ -0.43842659, -25.85438743, -6.39429734, -1.54477735, 32.3946724 ]]) In [168]: mat.dot(inv(mat)) Out[168]: array([[ 1.00000000e+00, 4.44089210e-16, 0.00000000e+00, -1.38777878e-17, -4.44089210e-16], [ 0.00000000e+00, 1.00000000e+00, 7.10542736e-15, 0.00000000e+00, -2.84217094e-14], [ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00, 8.88178420e-16, -1.42108547e-14], [-4.44089210e-16, -1.42108547e-14, -3.55271368e-15, 1.00000000e+00, 1.42108547e-14], [ 0.00000000e+00, -1.42108547e-14, -3.55271368e-15, 8.88178420e-16, 1.00000000e+00]]) In [169]: q, r = qr(mat) In [170]: r Out[170]: array([[-1.
98177521, -1.01858515, -3.90022484, -1.74739689, -1.69358168], [ 0. , -8.4068366 , -5.93064791, -5.55543324, -8.16388208], [ 0. , 0. , -1.63499732, -2.80467309, -0.45129639], [ 0. , 0. , 0. , -3.17546169, -0.14914608], [ 0. , 0. , 0. , 0. , 0.02382757]])

В таблице представлены наиболее часто используемые функции линейной алгебры.

Таблица 6. Часто используемые функции модуля numpy.linalg

Функция Описание
diag Возвращает диагональные элементы квадратной матрицы в виде одномерного массива или преобразует одномерный массив в квадратную матрицу с нулями вне диагонали
dot Умножение матриц
trace След матрицы — сумма диагональных элементов
det Определитель матрицы
eig Вычисляет собственные значения и собственные векторы квадратной матрицы
inv Вычисляет обратную матрицу
pinv Вычисляет псевдообратную матрицу Мура—Пенроуза
qr Вычисляет \( QR \) разложение матрицы
svd Вычисляет сингулярное разложение матрицы (SVD)
solve Решает линейную систему \( A x = b \), где \( A \) — квадратная матрица
lstsq Находит решение линейной системы \( Ax = b \) методом наименьших квадратов
  • ← Prev
  • Next →

«Компьютерное моделирование в среде MatLab»

«Компьютерное моделирование в среде MatLab»

жүктеу/скачать 38 Kb.

бет1/15
Дата29.01.2023
өлшемі38 Kb.
#63619

  1   2   3   4   5   6   7   8   9   …   15

Байланысты:
МАТЛАБтесты 110 вопросов (1)

    Бұл бет үшін навигация:
  • Пакеты расширений системы MatLab называются
  • Способна ли система MatLab выполнять операции над комплексными числами
  • Большинство команд и функций системы хранится в виде текстовых файлов с расширением
  • Какое меню в строке меню главного окна MatLab содержит команды для отображения и сокрытия внутренних окон программы
  • Какое окно системы MatLab предназначено для ввода чисел, переменных, выражений и команд, для просмотра результатов вычислений и отображения текстов программ

Тестовые задания по теме «Компьютерное моделирование в среде MatLab»

  1. MATLAB – это сокращение от слов

  1. Mathematical Laboratory (математическая лаборатория)

  2. Matrix Laboratory (матричная лаборатория)

  3. Materialized Labour (овеществленный труд)

  1. Пакеты расширений системы MatLab называются

  1. Toolkits

  2. Tools

  3. Toolboxes

  1. Из перечисленных устройств не является обязательным при работе с MatLab

  1. монитор

  2. процессор

  3. принтер

  1. Способна ли система MatLab выполнять операции над комплексными числами

  1. да

  2. нет

  1. Помимо вызова программ, составленных на языке MatLab, работа в среде MatLab

может выполняться

  1. «в автоматическом режиме»

  2. «в режиме ввода данных»

  3. «в режиме калькулятора»

  1. Большинство команд и функций системы хранится в виде текстовых файлов с

расширением

  1. г

  2. . m

  3. .p

  1. Какое меню в строке меню главного окна MatLab содержит команды для отображения

и сокрытия внутренних окон программы

  1. Window

  2. Help

  3. Desktop

  1. Какое окно системы MatLab предназначено для ввода чисел, переменных, выражений и

команд, для просмотра результатов вычислений и отображения текстов программ

  1. Command History

  2. Command Window

  3. Workspace
  1. жүктеу/скачать 38 Kb.


    Достарыңызбен бөлісу:

  1   2   3   4   5   6   7   8   9   …   15


©emirsaba.org 2023
әкімшілігінің қараңыз

    Басты бет

Lessons

Curriculum vitae

Documents

Умножение матриц в Matlab | Как выполнить умножение матриц?

Слово «Matlab» означает лабораторию Matrix. Изначально Matlab предназначался для выполнения матричных операций. Используя Matlab, мы можем очень легко реализовать сложные операции и задачи. Как мы знаем, в матричных операциях умножение является одной из сложных и сложных операций, но с помощью простой команды «mtimes» мы умножаем две матрицы.

Есть некоторые правила умножения матриц, как и в математике. Если матриц две, то количество столбцов первой матрицы должно быть равно количеству строк второго столбца. Предположим, что размеры первой матрицы составляют 2 строки и 3 столбца, а размеры второй матрицы — 4 строки и 3 столбца, тогда мы не можем выполнить умножение, поскольку количество столбцов в первой матрице и количество строк во второй матрице не совпадают.

Как выполнить умножение матриц в Matlab?

Существует два способа умножить матрицу на единицу с помощью оператора умножения «*». И во-вторых, с помощью команды «mtimes».

Использование оператора «*»

Чтобы сначала умножить две матрицы, нам нужны две матрицы. мы можем напрямую объявить матрицы или принять ввод от пользователя. Вот некоторые из шагов, которые нам нужно выполнить, как указано ниже:

  • Шаг 1: принять две матрицы, объявив две переменные.
  • Шаг 2: назначьте 3 rd переменную для вывода и запишите оператор как матрица 1 * матрица 2.
  • Шаг 3: Отображение выходных данных.
Использование команды «mtimes»

В этом методе нет необходимости в операторах, мы можем дать прямую команду входной матрице. Оператор может быть записан как mtimes (матрица 1, матрица 2)

  • Шаг 1: принять две матрицы, объявив две переменные.
  • Шаг 2: назначить переменную 3 rd для вывода и дать команду mtimes.
  • Шаг 3: Отображение выходных данных.

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

Ниже приведены некоторые примеры умножения матриц в Matlab:

Пример №1

Рассмотрим две матрицы mat1 и mat2, 3

3     4     2

3     2     1

мат 2 =

1     1     1

3     4     2

3     2     1

Использование оператора «*»

В следующей таблице показан приведенный выше пример с использованием оператора «*».

Редактор Matlab

Выход

мат1 = [ 1 2 3 ; 3 4 2 ; 3 2 1 ]

мат2=[ 1 1 1; 3 4 2 ; 3 2 1 ]

мат3 = мат1 * мат2

мат1 =

1     2     3

3     4     2

3     2     1

мат2 =

1     1     1

3     4     2

3     2     1

мат3 =

16    15     8

21    23    13

12    13     8

Выходные данные:

Использование команды «mtimes»

В следующей таблице показан приведенный выше пример с использованием команды «mtimes».

Редактор Matlab

Выход

мат1= [ 1 2 3 ; 3 4 2 ; 3 2 1 ]

мат2=[ 1 1 1 ; 3 4 2 ; 3 2 1 ]

мат4= mtimes ( мат1 , мат2 )

мат1 =

1     2     3

3     4     2

3     2     1

мат2 =

1     1     1

3     4     2

3     2     1

мат4 =

16    15     8

21    23    13

12    13     8

Выход:

Пример № 2

Давайте рассмотрим два матрицы и мат 2 —

MAT1 =

23 32 110003

22 3 2

16 39 21

32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32

22 2 2 2 2

16 39 23

32 32 32 32 32 32 32

4     1

mat2 =

41    11    43

32    41    32

3     2     1

вторые 1

3 столбца, поэтому количество столбцов первой матрицы равно количеству строк второй матрицы, поэтому можно выполнить умножение.

Использование оператора «*»

В следующей таблице показан приведенный выше пример с использованием оператора «*».

Редактор Matlab

Выход

мат1 = [ 23 , 32 , 11 ; 22 3 2 ; 16 39 21 ; 32 4 1 ]

мат2 = [ 4 1 11 43 ; 32 41 32 ; 3 2 1 ]

мат3 = мат1 * мат 2

мат1 =

23    32    11

22     3     2

16    3921

32     4     1

мат2 =

41    11    43

32    41    32

3     2     1

мат3 =

2000        1587        2024

1004         369        1044

1967        1817        1957

1443         518        1505

Вывод:

Использование команды «mtimes»

В следующей таблице показан приведенный выше пример с использованием команды «mtimes».

Редактор Matlab

Выход

мат1 = [ 23 , 32 , 11 ; 22 3 2 ; 16 39 21 ; 32 4 1 ]

мат2 = [ 41 11 43 ; 32 41 32 ; 3 2 1 ]

мат4 = mtimes ( мат1 , мат2 )

мат1 =

23    32    11

22     3     2

16    39    21

32     4     1

мат2 =

41    11    43

32    41    32

3     2     1

мат4 =

2000        1587        2024

1004         369        1044

1967        1817        1957

1443         518        1505

Выход:

Пример № 3

Предположим, что две матрицы — MAT1 и MAT2,

MAT1 =

5 6 3 2

3 2 4 5

3 2 2 2 2 2 2

3 4 5

3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 100020003

mat2 =

3     4     2

2     3     4

3     3     4

поэтому количество столбцов первой матрицы не равно количеству строк второй матрицы, поэтому умножение не может быть выполнено.

Редактор Matlab

Выход

мат1= [ 5 6 3 2 ; 3 2 4 5 ; 3 2 1 1 ]

мат2= [ 3 4 2 ; 2 3 4 ; 3 3 4 ]

мат3= мат1 * мат2

мат1 =

5     6     3     2

3     2     4     5

3     2     1     1

мат2 =

3     4     2

2     3     4

3     3     4

Ошибка при использовании *

Внутренние размеры матрицы должны совпадать.

Вывод:

Заключение

Умножение матриц — очень сложная и сложная операция в математике, но мы реализуем то же самое в Matlab, мы можем легко получить вывод без ошибок. Оба метода, используемые для умножения матриц, легки и просты в реализации. Это делает программу более эффективной.

Рекомендуемые статьи

Это руководство по умножению матриц в Matlab. Здесь мы обсуждаем, как выполнить умножение матриц в Matlab вместе с примерами. Вы также можете прочитать следующие статьи, чтобы узнать больше –

  1. Умножение матриц в Java
  2. 3D Матрица в MATLAB
  3. Матрица в Matlab
  4. Matlab И Оператор

Почему MATLAB так быстро умножает матрицы?

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

Насколько быстро выполняется умножение матриц?

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

Как MATLAB умножает матрицы?

Умножение матриц возможно, только если количество столбцов n в U равно количеству строк n в V. При умножении матриц элементы первой строки матрицы умножаются на элементы столбцов второй матрицы. Если U — матрица размера m x n, а V — матрица размера n x p, их можно объединить, чтобы получить матрицу размера m x p Z.
Сумма произведений элементов в i-й строке первой матрицы и соответствующего элемента в j-м столбце второй матрицы дает каждый элемент в (i, j)-й позиции конечной матрицы Z. Оператор * используется в MATLAB для выполнения матричного умножения.

Пример 1:

a = [ 9 8 7; 5 6 7; 1 2 3]

б = [ 3 4 7; 6 4 3; -2 3 4 ]

prod = a * b

Выход:

Файл отображает следующий результат, когда вы запускаете

Самый быстрый алгоритм для умножения:

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *