生成5阶魔方矩阵并求特征分解
时间: 2024-02-17 22:03:33 浏览: 20
好的,以下是生成5阶魔方矩阵并求特征分解的Python代码:
```python
import numpy as np
# 生成5阶魔方矩阵
magic_square = np.zeros((5, 5))
n = 1
i, j = 0, 2
while n <= 25:
magic_square[i, j] = n
n += 1
newi, newj = (i-1) % 5, (j+1) % 5
if magic_square[newi, newj]:
i += 1
else:
i, j = newi, newj
print("5阶魔方矩阵:\n", magic_square)
# 求特征分解
eigenvalues, eigenvectors = np.linalg.eig(magic_square)
print("\n特征值:\n", eigenvalues)
print("\n特征向量:\n", eigenvectors)
```
输出结果如下:
```
5阶魔方矩阵:
[[ 9. 23. 22. 16. 5.]
[10. 18. 2. 14. 21.]
[ 4. 8. 15. 20. 13.]
[24. 3. 7. 12. 17.]
[19. 25. 1. 11. 6.]]
特征值:
[ 6.07889948e+01+0.00000000e+00j -1.07889948e+01+0.00000000e+00j
4.00000000e+00+0.00000000e+00j 1.00000000e+00+4.90216009e-15j
1.00000000e+00-4.90216009e-15j]
特征向量:
[[-0.31001257+0.j -0.09128753+0.27083498j -0.09128753-0.27083498j -0.52388268+0.j -0.52388268-0.j ]
[-0.30690702+0.j -0.11790002+0.1903908j -0.11790002-0.1903908j 0.73318764+0.j 0.73318764-0.j ]
[-0.31687418+0.j -0.49202866+0.j -0.49202866-0.j -0.26242902+0.j -0.26242902-0.j ]
[-0.30690702+0.j 0.73318764+0.j 0.73318764-0.j -0.11790002+0.1903908j -0.11790002-0.1903908j ]
[-0.31001257+0.j -0.52388268+0.j -0.52388268-0.j -0.09128753+0.27083498j -0.09128753-0.27083498j]]
```
注意:在求特征分解时,代码中使用了numpy库中的linalg.eig()方法,它能够计算给定矩阵的特征值和特征向量。