scipyのダウンロード線形代数

セクション


scipyのダウンロード線形代数パッケージは、効率的な線形代数演算機能を備えた、ATLAS LAPACK BLASライブラリーの構築を使用して最適化されています。

代数パッケージ機能線形、操作対象は、二次元アレイです。

SciPy.linalgとNumPy.linalgは
NumPy.linalgと比較して、scipy.linalgが見つかりませんをnumpy.linalg高度な機能を持っても、numpy.linalgのすべての機能が含まれています。

リニア式

scipy.linalg.solve関数は、線形方程式のために使用することができます。例えば、$のための線形方程式* X + B * Y = Z $、決定された未知のx、yの値。

以下の連立方程式を解きます:

$$
X + 3Y + 5Z = 10 \
2X + 5Y + Z = 8 \
2X + 3Y + 8Z = 3
$$

上記の式は、行列として表すことができます。

$$
\ [左
\ {行列}開始
1・3・5 \
2・5・1 \
2&3&8
\端{行列}
\右]

\左[
{行列}開始\
X \
Y \
Z
\端{行列}
= \権利]

\左[
{行列}開始\
10 \
8 \
3
\端{行列}
\右]

$$

以下に示すように、行列を用いて上記式を解きます。

$$
\左[
{行列}開始\
X \
Y \
Z
\端{行列}
\権利]

=

\ [左
{行列}開始\
1&3&5 \
2・5・1 \
2&3&8
\端{行列}
\右] ^ { - 1}

\左[
{行列}開始\
10 \
8 \
3
\端{行列}
\右]

= \ FRAC {1} {25}

\ [左
\ {行列}開始
-232 \
129 \
19
\端{行列}
\右]

=

\ [左
\ {行列}開始
-9.28 \
5.16 \
0.76
\端{行列}
\右]

$$

ここでは、解決するためにscipyのダウンロードを使用しています。

scipy.linalg.solve関数は、2つの入力、配列受け付けるaとアレイをb、アレイは、a係数配列を表し、b等号の右辺の値を示し、得られた溶液を返すために、アレイに配置されます。

私たちは、次の例を考えてみましょう。

# 导入scipy和numpy包
from scipy import linalg
import numpy as np

# 声明numpy数组
a = np.array([[1, 3, 5], [2, 5, 1], [2, 3, 8]])
b = np.array([10, 8, 3])

# 求解
x = linalg.solve(a, b)

# 输出解值
print (x)

輸出

[-9.28  5.16  0.76]

決定計算

A | |行列Aの行列が$として表され$、行列演算処理は、一般的な線形代数です。

scipyのダウンロードが使用できるdet()入力として受け入れ、スカラー値、マトリックスの、すなわち、行列式を返す行列の行列式を計算する関数。

# 导入scipy和numpy包
from scipy import linalg
import numpy as np

# 声明numpy数组
A = np.array([[3,4],[7,8]])

# 计算行列式
x = linalg.det(A)

# 输出结果
print (x)

輸出

-4.0

固有値と固有ベクトルを取得

固有値、固有ベクトルを取得、線形代数の一般的な計算です。

一般的に、以下の関係によれば、特性値(λ)行列(A)、固有ベクトル(V)を取得します。

$$消灯=λV$$

scipy.linalg.eig関数が計算固有値及び固有ベクトルに使用され、関数は固有値と固有ベクトルを返します。

# 导入scipy和numpy包
from scipy import linalg
import numpy as np

# 声明numpy数组
A = np.array([[3,4],[7,8]])

# 求解
l, v = linalg.eig(A)

# 打印特征值
print('特征值')
print (l)

# 打印特征向量
print('特征向量')
print (v)

上記の手順は、次の出力を生成します。

特征值
[-0.35234996+0.j 11.35234996+0.j]
特征向量
[[-0.76642628 -0.43192981]
 [ 0.64233228 -0.90190722]]

SVD特異値分解

特異値分解(SVD)が今より一般的なアルゴリズムの一つであり、エンジニア、必要なスキルのアルゴリズム1人のエンジニアをマイニングデータです。Aが$ M×N $行列であり、行列Uは$ M×M $正方形であるV ^ T $(V転置)は、3つのマトリックス、$ U、Σによって分解されると仮定、直交ベクトルである行列、左特異ベクトルと呼ばれ、[シグマ他方が0である間$ M×Nは、と呼ばれる対角の対角要素の値を対角行列を$で特異値; $ V ^ T $(V転置)は$ N×N $行列であり、ベクトル行列も直交する右特異ベクトルと呼ばれます。

$$ A_ {M \回{N} = U_ {M \回{M}}Σ_{M \回{N}} V_ {N \回{N}} ^ T $$

私たちは、次の例を考えてみましょう。

# 导入scipy和numpy包
from scipy import linalg
import numpy as np

# 声明numpy数组
a = np.random.randn(3, 2) + 1.j*np.random.randn(3, 2)

# 输出原矩阵
print('原矩阵')
print(a)

# 求解
U, s, Vh = linalg.svd(a)

# 输出结果
print('奇异值分解')
print(U, "#U")
print(Vh, "#Vh")
print(s, "#s")

上記の手順は、次の出力を生成します。

原矩阵
[[ 1.81840014+0.16615057j -0.47446573-2.36327076j]
 [-0.19366846-0.44489565j -0.03227288+0.02260894j]
 [-0.91921239-0.99340761j -1.33606096+0.40858722j]]
奇异值分解
[[-0.84399035+0.03548862j -0.1574924 +0.44602345j  0.08723906-0.23466874j]
 [ 0.03893388+0.08672055j -0.19156838-0.45118633j -0.02718865-0.86600053j]
 [ 0.23121352+0.47320699j -0.71944217+0.13562682j  0.41089761+0.13336765j]] #U
[[-0.63461867+0.j          0.05670247+0.77074248j]
 [ 0.77282543+0.j          0.04656219+0.63290822j]] #Vh
[3.55734783 0.7144458 ] #s

おすすめ

転載: www.cnblogs.com/jinbuqi/p/11819411.html