матрицы – Произведение матриц Python
Задать вопрос
Вопрос задан
Изменён 7 месяцев назад
Просмотрен 308 раз
Заданы две целочисленные матрицы A и B. Матрица A состоит из N строк и M столбцов, Матрица B состоит из M строк и P столбцов. Требуется вычислить произведение данных матриц AB.
Входные данные
Первая строка входного файла INPUT.TXT содержит три натуральных числа N, M и P. Далее следует описание матриц A и B. Матрица A состоит из N строк по M целых чисел. Матрица B состоит из M строк по P чисел. Матрицы отделены друг от друга пустой строкой. Все числа во входных данных не превышают 100 по абсолютной величине.
Выходные данные
В выходной файл OUTPUT.
Мой код:
n, m, p = map(int, input().split())
X = [list(map(int, input().split())) for i in range(n)]
input()
Y = [list(map(int, input().split())) for j in range(m)]
result = [[sum(a * b for a, b in zip(X_row, Y_col)) for Y_col in zip(*Y)] for X_row in X]
for i in range(m):
for j in range(p):
print(result[i][j], end=' ')
print()
Тестовые данные для ввода: размерности 2 2 3
Матрица А
2 3
-1 4
Матрица Б
2 -3 4
3 1 0
Вывод:
13 -3 8
10 7 -4
Не могу найти решение для матриц разного размера, 2х2 на 2х3
- python
- матрицы
6
При перемножении матриц указанных размеров получается матрица n x p.
Так что достаточно исправить при выводе
for i in range(n):
и код будет работать с любыми размерами
Если не использовать никаких питоновских штучек, кроме задания результирующей матрицы (так что циклы будут выглядеть так же в большинстве языков):
c = [[0]*p for _ in range(n)]
for i in range(n):
for j in range(p):
for k in range(m):
c[i][j] += X[i][k] * Y[k][j]
4
Зарегистрируйтесь или войдите
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
Почта
Необходима, но никому не показывается
Отправить без регистрации
Почта
Необходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки
7.
1.3. Умножение MathCAD 12 руководствоRADIOMASTER
Лучшие смартфоны на Android в 2022 году
Серия iPhone от Apple редко чем удивляет. Когда вы получаете новый iPhone, общее впечатление, скорее всего, будет очень похожим на ваше предыдущее устройство. Однако всё совсем не так в лагере владельцев устройств на Android. Существуют телефоны Android всех форм и размеров, не говоря уже о разных ценовых категориях. Другими словами, Android-телефон может подойти многим. Однако поиск лучших телефонов на Android может быть сложной задачей.
1534 0
Документация Схемотехника CAD / CAM Статьи
MathCAD 12 MatLab OrCAD P CAD AutoCAD MathCAD 8 – 11
- Главная /
- База знаний /
- CAD / CAM /
org/Breadcrumb”>MathCAD 12
- Линейная алгебра
- 7.1. Простейшие матричные операции
- 7.1.1. Транспонирование
- 7.1.2. Сложение и вычитание
- 7.1.3. Умножение
- 7.2. Векторная алгебра
- 7.2.1. Модуль вектора
- 7.2.2. Скалярное произведение
- 7.2.3. Векторное произведение
- 7.2.4. Векторизация массива
- 7.3. Вычисление определителей и обращение квадратных матриц
- 7.3.1. Определитель квадратной матрицы
- 7.3.2. Ранг матрицы
- 7.3.3. Обращение квадратной матрицы
- 7.3.4. Возведение квадратной матрицы в степень
- 7.3.5. Матричные нормы
- 7.3.6. Число обусловленности квадратной матрицы
- 7.4. Вспомогательные матричные функции
- 7.4.1. Автоматическая генерация матриц
- 7.4.2. Разбиение и слияние матриц
- 7.
4.3. Сортировка элементов матриц - 7.4.4. Вывод размера матрицы
При умножении следует помнить, что матрицу размерности MxN допустимо умножать только на матрицу размерности NxP (р может быть любым). В результате получается матрица размерности MхP.
Чтобы ввести символ умножения, нужно нажать клавишу со звездочкой <*> или воспользоваться панелью инструментов Matrix (Матрица), нажав на ней кнопку Dot Product (Умножение). Умножение матриц обозначается по умолчанию точкой, как показано в листинге 7.5.
Листинг 7.5. Перемножение матриц
Обратите внимание (нижняя строка листинга 7.5), что попытка перемножить матрицы
А и В несоответствующего (одинакового 2х3) размера оказалась безрезультатной: после введенного знака равенства находится пустой местозаполнитель, а само выражение в редакторе Mathcad выделяется красным цветом. При установке курсора на это выражение появляется сообщение о несовпадении числа строк первой матрицы с числом столбцов второй матрицы.
Еще один пример, относящийся к умножению вектора на матрицу-строку и, наоборот, строки на вектор, приведен в листинге 7.6.
ВНИМАНИЕ!
Тот же самый оператор умножения действует на два вектора по-другому (см. разд. 7.2.2).
Листинг 7.6. Умножение вектора и строки
Аналогично сложению матриц со скаляром определяется умножение и деление матрицы на скалярную величину (листинг 7.7). Символ умножения вводится так же, как и в случае умножения двух матриц. На скаляр можно умножать матрицу любой размерности.
Листинг 7.7. Умножение матрицы на скалярную величину
Нравится
Твитнуть
Теги MathCad САПР
Сюжеты MathCad
Глава 1 Основы работы с системой Mathcad 11
10059 0
Глава 10 Работа с информационными ресурсами Mathcad 11
7047 0
Глава 2 Работа с файлами Mathcad 11
12761 0
Комментарии (0)
Вы должны авторизоваться, чтобы оставлять комментарии.
Вход
О проекте Использование материалов Контакты
Новости Статьи База знаний
Радиомастер
© 2005–2022 radiomaster.
ru
При использовании материалов данного сайта прямая и явная ссылка на сайт radiomaster.ru обязательна. 0.2441 s
Умножение матриц
Умножение матрицРассмотрим произведение матрицы 2×3 и матрицы 3×4. Умножение определяется, поскольку внутренние размеры (3) одинаковы. Продукт будет быть матрицей 2×4, внешние размеры.
Так как в первой матрице три столбца и три строки во второй матрица (внутренние размеры которой должны быть одинаковыми), каждый элемент в произведении будет сумма трех продукты.
Строка 1, Столбец 1
Чтобы найти элемент в строке 1, столбце 1 произведения, мы возьмем строку 1 из первой матрицы и столбец 1 из второй матрицы. Мы соединяем эти значения вместе, умножаем пары значений, а затем добавляем к прибыть в 25.
Р 1 : 1 -2 3
×С 1 : 1 -3 6
---------------
1 +6 +18 = 25 Строка 2, Столбец 3
Чтобы найти элемент в строке 2, столбце 3 произведения, возьмем строку 2
из первой матрицы и столбец 3 из второй матрицы.
Соединяем эти значения
вместе, перемножьте пары значений, а затем добавьте к
прибыть в 53.
Р 2 : 4 5 -2
×С 3 : 4 7 -1
---------------
16 +35 +2 = 53 Понимание того, откуда взялось каждое число в произведении, полезно, когда вам нужно только определенное значение. Вам не нужно умножать полностью, если вы нужны только определенные элементы. Просто возьмите строку из первой матрицы и столбец из второй матрицы.
Процесс можно завершить для остальных элементов матрицы.
| Столбец 1 | Столбец 2 | Столбец 3 | Столбец 4 | ||
|---|---|---|---|---|---|
| значений | [1, -3, 6] | [-8, 6, 5] | [4, 7, -1] | [-3, 2, 4] | |
| Ряд 1 | [1, -2, 3] | 1(1) – 2(-3) + 3(6) = 1 + 6 + 18 = 25 | 1(-8) -2(6) + 3(5) = -8 – 12 + 15 = -5 | 1(4) -2(7) +3(-1) = 4 – 14 – 3 = -13 | 1(-3) -2(2) + 3(4) = -3 -4 + 12 = 5 |
| Ряд 2 | [4, 5, -2] | 4(1) + 5(-3) -2(6) = 4 – 15 – 12 = -23 | 4(-8) + 5(6) – 2(5) = -32 + 30 – 10 = -12 | 4(4) + 5(7) -2(-1) = 16 + 35 + 2 = 53 | 4(-3) + 5(2) -2(4) = -12 + 10 – 8 = -10 |
Итак, конечный продукт
| 25 | -5 | -13 | 5 | ||
| -23 | -12 | 53 | -10 |
Обратите внимание, что умножение не определяется другим способом.
Вы не можете умножить
3×4
и матрица 2×3 вместе, потому что внутренние размеры не совпадают.
Этот продукт не определен.
matrix – Перемножить две матрицы разных размеров в R
Задавать вопрос
спросил
Изменено 2 года, 7 месяцев назад
Просмотрено 2к раз
Часть R Language Collective Collective
Я пытаюсь использовать (s) применение для умножения двух матриц с разными размерами. Матрицы:
xx <- matrix(c(1, 2, 3, 4, 5, 6), nrow=2, ncol=3, byrow=T) yy <- matrix(c(10, 100), nrow=2, ncol=1, byrow=T)
Я хочу умножить каждую строку одной матрицы на каждую строку другой матрицы и получить это:
> zz
[1] [2] [3]
[1,] 10 20 30
[2,] 400 500 600
Я попробовал sapply(yy, function(x) xx*x) , который создает матрицу 6x2 вместо матрицы 3x2, которую я хочу.
