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 np
from 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 array
a = np.array([[1, 3, 10], [2, 12, 7], [5, 8, 8]])
# Solution Array
b = np.array([[10], [18], [30]])
# Solve the linear algebra
x = linalg.solve(a, b)
# Print results
print(x)
# Checking Results
print("\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存储了评估的解决方案。

寻找决定因素

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

让我们考虑以下示例:

from scipy import linalg
import numpy as np
#Declaring the numpy array
A = np.array([[5, 9], [8, 4]])
#Passing the values to the det function
x = linalg.det(A)
#printing the result
print(x)

输出

-52

特征值和特征向量

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

关=λv

#importing the scipy and numpy packages
from scipy import linalg
import numpy as np
#Declaring the numpy array
a = np.array([[3, 2], [4, 6]])
#Passing the values to the eig function
l, v = linalg.eig(a)
#printing the result for eigenvalues
print(l)
#printing the result for eigenvectors
print(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是对角的, 并带有实数正项。


来源:

https://www.srcmini02.com/31072.html

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?