python实现AB矩阵乘法
时间: 2023-05-18 09:05:34 浏览: 83
下面是Python实现AB矩阵乘法的代码:
```python
def matrix_multiply(A, B):
"""
AB矩阵乘法
:param A: 矩阵A
:param B: 矩阵B
:return: 矩阵C
"""
if len(A[0]) != len(B):
return None
C = [[0] * len(B[0]) for i in range(len(A))]
for i in range(len(A)):
for j in range(len(B[0])):
for k in range(len(B)):
C[i][j] += A[i][k] * B[k][j]
return C
```
其中,A和B分别是两个矩阵,C是它们的乘积矩阵。在函数中,首先判断A的列数是否等于B的行数,如果不等于,则无法进行矩阵乘法,返回None。然后,创建一个C矩阵,用于存储乘积结果。接着,使用三重循环计算C矩阵的每个元素,最后返回C矩阵。
相关问题
使用python实现分治法中的矩阵乘法
以下是使用Python实现分治法中的矩阵乘法的代码:
```python
def matrix_multiply(A, B):
n = len(A)
C = [[0 for j in range(n)] for i in range(n)]
if n == 1:
C[0][0] = A[0][0] * B[0][0]
else:
# 分割矩阵
A11, A12, A21, A22 = sub_matrix(A)
B11, B12, B21, B22 = sub_matrix(B)
# 递归计算
C11 = matrix_add(matrix_multiply(A11, B11), matrix_multiply(A12, B21))
C12 = matrix_add(matrix_multiply(A11, B12), matrix_multiply(A12, B22))
C21 = matrix_add(matrix_multiply(A21, B11), matrix_multiply(A22, B21))
C22 = matrix_add(matrix_multiply(A21, B12), matrix_multiply(A22, B22))
# 合并子矩阵
merge_matrix(C, C11, C12, C21, C22)
return C
def sub_matrix(A):
n = len(A)
m = n//2
A11 = [[0 for j in range(m)] for i in range(m)]
A12 = [[0 for j in range(m)] for i in range(m)]
A21 = [[0 for j in range(m)] for i in range(m)]
A22 = [[0 for j in range(m)] for i in range(m)]
for i in range(m):
for j in range(m):
A11[i][j] = A[i][j]
A12[i][j] = A[i][j+m]
A21[i][j] = A[i+m][j]
A22[i][j] = A[i+m][j+m]
return A11, A12, A21, A22
def matrix_add(A, B):
n = len(A)
C = [[0 for j in range(n)] for i in range(n)]
for i in range(n):
for j in range(n):
C[i][j] = A[i][j] + B[i][j]
return C
def merge_matrix(C, C11, C12, C21, C22):
n = len(C)
m = n//2
for i in range(m):
for j in range(m):
C[i][j] = C11[i][j]
C[i][j+m] = C12[i][j]
C[i+m][j] = C21[i][j]
C[i+m][j+m] = C22[i][j]
```
在上面的代码中,我们定义了四个函数:`matrix_multiply`、`sub_matrix`、`matrix_add`和`merge_matrix`。
`sub_matrix`函数用于将一个矩阵分成四个子矩阵,即A11、A12、A21和A22。
`matrix_add`函数用于将两个矩阵相加。
`merge_matrix`函数用于将四个子矩阵合并成一个矩阵。
`matrix_multiply`函数是我们的主函数,它用于计算两个矩阵的乘积。如果矩阵的大小为1x1,则直接计算乘积。否则,我们将矩阵分成四个子矩阵,并递归地计算它们的乘积。最后,我们将四个子矩阵的乘积合并成一个矩阵。
下面是一个示例,演示如何使用上面的代码计算两个矩阵的乘积:
```python
A = [[1, 2], [3, 4]]
B = [[5, 6], [7, 8]]
C = matrix_multiply(A, B)
print(C)
```
输出结果为:
```
[[19, 22], [43, 50]]
```
这个结果与直接计算AB的结果相同。
向量与矩阵的乘法python
在 Python 中,可以使用 NumPy 库进行向量和矩阵的乘法。下面是一个例子:
```python
import numpy as np
# 定义一个向量
v = np.array([1, 2, 3])
# 定义一个矩阵
m = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 计算向量和矩阵的乘积
result = np.dot(m, v)
print(result)
```
输出结果为:
```
[14 32 50]
```
其中 `np.dot(m, v)` 表示计算矩阵 `m` 和向量 `v` 的乘积。如果要计算矩阵之间的乘积,可以使用类似的方法,例如:
```python
import numpy as np
# 定义两个矩阵
m1 = np.array([[1, 2], [3, 4]])
m2 = np.array([[5, 6], [7, 8]])
# 计算矩阵之间的乘积
result = np.dot(m1, m2)
print(result)
```
输出结果为:
```
[[19 22]
[43 50]]
```
注意,矩阵的乘法是满足结合律和分配律的,即对于任意矩阵 $A, B$ 和 $C$,有:
$$A(BC) = (AB)C$$
$$A(B+C) = AB + AC$$
因此,在进行矩阵乘法时,需要注意矩阵的维度是否满足要求。