题目①线性代数操作
一、源程序调试过程
1、导入库
import numpy as np
2、生成数组
a = np.array([[1.,2.],[3.,4.]])
y = np.array([[5.],[7.]])
3、数组a的转置
a_T = a.T
4、创建形状为(2,2)的对角矩阵b
对角矩阵是一种特殊的方阵,其除了对角线上的元素为非零数外,其他元素均为零。
np.diag() 是 NumPy 中用于生成对角矩阵的函数:numpy.diag(v, k=0)
其中,v 是一个数组或列表,表示对角线上的元素;k 是一个整数,表示对角线的偏移量。
(1)生成一维数组的对角矩阵
v 是一个一维数组,则 np.diag()会返回一个以 v 中的元素为对角线上的元素,其他位置为零的对角矩阵。
v = np.array([1, 2, 3])
b1 = np.diag(v)
(2)生成二维数组的对角矩阵
v 是一个二维数组,则 np.diag() 会返回一个二维数组的对角矩阵,即以 v 中的每个一维数组的元素为对角线上的元素,其他位置为零的对角矩阵。
v = np.array([[1, 2], [3, 4]])
b2 = np.diag(v)
(3)生成偏移量不为零的对角矩阵
k 的值不为零,则对角线上的元素将会出现在矩阵的第 k 条对角线上。
如果 k 大于零,则对角线在矩阵的主对角线的上方;
如果 k 小于零,则对角线在矩阵的主对角线的下方。
v = [1, 2, 3]
b3 = np.diag(v, k=1)
b4 = np.diag(v, k=-1)
(4)输出形状为(2,2)的对角矩阵b
v = np.array([1.,2.])
b5 = np.diag(v)
5、对角矩阵的迹
对角矩阵的迹(trace)是指对角线上的元素之和。
对角矩阵的迹在数学和工程领域都有广泛的应用,例如用于计算特征值、判断矩阵是否正定等等。
可以使用 np.trace() 函数来计算一个矩阵的迹。如果传入的是一个二维数组,则 np.trace() 会返回该数组的迹;如果传入的是一个一维数组,则会返回该数组转化为二维数组后的迹。
计算对角矩阵b的迹:
tr = np.trace(b)
6、求解数组a和数组y的解
a = np.array([[1.,2.],[3.,4.]])
y = np.array([[5.],[7.]])
给定线性方程组 a x = y,我们可以使用 NumPy 中的 np.linalg.solve() 函数来求解其解 x
x = np.linalg.solve(a, y)
二、实验实习结果分析
1、输出创建的数组a
[[1. 2.]
[3. 4.]]
2、输出a的转置a_T
[[1. 3.]
[2. 4.]]
3、b1:
[[1 0 0]
[0 2 0]
[0 0 3]]
4、b2:
[1 4]
5、b3:
[[0 1 0 0]
[0 0 2 0]
[0 0 0 3]
[0 0 0 0]]
6、b4:
[[0 0 0 0]
[1 0 0 0]
[0 2 0 0]
[0 0 3 0]]
7、b:
[[1. 0.]
[0. 1.]]
8、b_trace: 2.0
9、x:
[[-3.]
[ 4.]]
三、心得体会
1、学会了使用numpy库生成数组array
2、学会了矩阵的转置array.T
3、生成对角矩阵的函数:numpy.diag(v, k