SciPy如何计算线性代数(这里有详细解释————)

SciPy建立在ATLAS LAPACK和BLAS库的基础上, 它提供了非常快速的线性代数功能。线性代数例程接受二维数组对象, 并且输出也以二维数组形式给出。如果我们想提高计算速度, 则必须在这种情况下进行深入研究。
可以通过键入以下scipy函数来解决线性代数问题:

linalg.solve()

线性方程
linalg.solve用于求解未知x, y值的线性方程a * x + b * y =Z。
x + 3y + 10z = 10
2x + 12y + 7z = 18
5x + 8y + 8z = 30
在这里, 我们将使用linear.solve命令来求解上述线性方程式, 以加快计算速度。
import numpy as npfrom scipy import linalg# We are trying to solve a linear algebra system which can be given as #x + 3y +10z = 10#2x + 12y + 7z = 18#5x + 8y + 8z = 30# Creating input arraya = np.array([[1, 3, 10], [2, 12, 7], [5, 8, 8]])# Solution Arrayb = np.array([[10], [18], [30]])# Solve the linear algebrax = linalg.solve(a, b)# Print resultsprint(x)# Checking Resultsprint("\n Checking results, Vectors must be zeros")print(a.dot(X) - b)

输出
[[4.55393586] [0.51311953] [0.39067055]] Checking results, Vectors must be zeros [[0.] [0.] [0.]]

在上面的程序中, 我们已将a和b声明为变量, 其中存储的方程系数和b存储了右侧值。变量x存储了评估的解决方案。
寻找决定因素
【SciPy如何计算线性代数(这里有详细解释————)】方格的行列式是使用linalg.det()函数找到的。确定的A通常表示为| A |。在线性代数中。它接受矩阵并返回标量值。
让我们考虑以下示例:
from scipy import linalgimport numpy as np#Declaring the numpy arrayA = np.array([[5, 9], [8, 4]])#Passing the values to the det functionx = linalg.det(A)#printing the resultprint(x)

输出
-52

特征值和特征向量
寻找特征值和特征向量问题是线性代数中最常见的问题。我们可以通过linalg.eig()函数找到平方矩阵(A)的特征值(?)和相应的特征向量(v)。考虑以下示例:
关=λv
#importing the scipy and numpy packagesfrom scipy import linalgimport numpy as np#Declaring the numpy arraya = np.array([[3, 2], [4, 6]])#Passing the values to the eig functionl, v = linalg.eig(a)#printing the result for eigenvaluesprint(l)#printing the result for eigenvectorsprint(v)

输出
[-0.37228132+0.j5.37228132+0.j][[-0.82456484 -0.41597356] [ 0.56576746 -0.90937671]]

SciPy的svd
svd代表单值分解。矩阵A的唯一值分解是将A分解为三个矩阵A = UDVT的乘积, 其中U和V的列是正交的, 矩阵D是对角的, 并带有实数正项。

    推荐阅读