运用jupyter(1)创建4个相问的3x3对角矩阵,对角线元素均为【1,2,3】,再使用bmat函数合井4个对角矩阵为1个6x6的新矩阵。 (2)利用(1)中的6x6矩阵,返回矩阵的转置矩阵,逆短阵
时间: 2024-09-28 13:17:56 浏览: 46
Python二维数组实现求出3*3矩阵对角线元素的和示例
5星 · 资源好评率100%
在Jupyter中,你可以按照以下步骤操作:
1. 首先,我们使用numpy库中的`eye`函数创建四个3x3的对角矩阵,对角线元素分别为1, 2, 3。`eye(n)`会生成一个n x n的单位矩阵,然后我们可以选择特定的行和列设置为其他值。
```python
import numpy as np
# 创建4个3x3的对角矩阵
diag1 = np.eye(3) * 1
diag2 = np.eye(3) * 2
diag3 = np.eye(3) * 3
# 对角线元素均为1, 2, 3
diag1[0, 0] = diag2[1, 1] = diag3[2, 2] = 1
diag2[0, 1] = diag3[1, 2] = 2
diag3[0, 2] = diag1[1, 1] = 3
```
2. 然后,使用`block_diag`函数从`scipy.sparse`模块导入的`bmat`函数,将这四个矩阵合并成一个6x6的矩阵。如果`scipy`还没安装,可以运行`!pip install scipy`。
```python
from scipy.sparse import bmat
# 合并4个对角矩阵为一个6x6的新矩阵
big_matrix = bmat([[diag1, None], [None, [diag2, None]], [None, [None, diag3]]])
```
3. 接下来,我们将这个大矩阵转换为其转置矩阵。在numpy中,使用`.T`表示转置。
```python
transpose_matrix = big_matrix.T
print("转置矩阵:")
print(transpose_matrix)
```
4. 要获取逆矩阵,由于`big_matrix`是稀疏矩阵,我们可以使用`scipy.linalg`的`inv`函数计算逆矩阵。注意不是所有矩阵都有逆,只有方阵且行列式非零才有逆。
```python
from scipy.linalg import inv
if sparse.issparse(big_matrix):
try:
inverse_matrix = inv(big_matrix.toarray())
except LinAlgError:
print("无法计算逆矩阵,因为矩阵不是方阵或奇异矩阵")
else:
inverse_matrix = inv(big_matrix)
print("逆矩阵:")
print(inverse_matrix)
```
记得检查是否能计算逆,因为不是所有的矩阵都能有逆。
阅读全文