SciPy 线性代数

2024 年 8 月 29 日 | 阅读 2 分钟

SciPy 基于 ATLAS LAPACKBLAS 库构建,并提供非常快速的线性代数功能。 线性代数程序接受二维数组对象,并且输出也作为二维数组给出。 如果我们想要更快的计算速度,那么我们必须深入研究这种情况。

可以通过键入以下 scipy 函数来解决线性代数问题

线性方程

linalg.solve 用于求解线性方程 a*x + b*y = Z,求未知数 x, y 的值。

x + 3y +10z = 10
2x + 12y + 7z = 18
5x + 8y + 8z = 30

在这里,我们将使用 linear.solve 命令来解决上述线性方程,以便进行更快的计算。

输出

[[4.55393586]
 [0.51311953]
 [0.39067055]]

 Checking results, Vectors must be zeros 
[[0.]
 [0.]
 [0.]]

在上面的程序中,我们声明了 a 和 b 作为变量,其中 a 存储方程的系数,b 存储右手边的值。变量 x 存储评估的解。

求行列式

通过使用 linalg.det() 函数来找到方阵的行列式。行列式 A 在线性代数中通常表示为 |A|。它接受一个矩阵并返回一个标量值。

让我们看下面的例子

输出

-52

特征值和特征向量

寻找特征值和特征向量问题是线性代数中最常见的问题。 我们可以通过 linalg.eig() 函数找到方阵 (A) 的特征值 (?) 和相应的特征向量 (v)。 考虑以下示例

Av = λv

输出

[-0.37228132+0.j  5.37228132+0.j]
[[-0.82456484 -0.41597356]
 [ 0.56576746 -0.90937671]]

SciPy svd

svd 代表奇异值分解。 矩阵 A 的奇异值分解是将 A 分解为三个矩阵 A = UDVT 的乘积,其中 U 和 V 的列是正交的,矩阵 D 是具有实正项的对角矩阵。


下一主题SciPy Ndimage