Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonのNumPyで2ノルムを使って行列の条件数を計算する方法

線形代数における行列の条件数(コンディションナンバー)を計算するには、Pythonの numpy.linalg.cond() メソッドを使用します。このメソッドは、引数 p の値に応じて7種類の異なるノルムから選択して条件数を返すことができます。返される値は無限大になる場合もあります。

行列 x の条件数は、「x のノルム × x の逆行列のノルム」として定義されます。ここで使うノルムは、通常のL2ノルムやその他さまざまな行列ノルムを選べます。第1引数の x は、条件数を求めたい対象の行列です。第2引数の p は、条件数の計算に使用するノルムの次数を指定します。「2」を指定した場合は2ノルムが使用されます。

計算の手順

まず、必要なライブラリをインポートします。

import numpy as np
from numpy import linalg as LA

配列を作成します。

arr = np.array([[ 1, 1, 0], [1, 0, 1], [1, 0, 0]])

配列を表示します。

print("Our Array...\n",arr)

次元を確認します。

print("\nDimensions of our Array...\n",arr.ndim)

データ型を取得します。

print("\nDatatype of our Array object...\n",arr.dtype)

形状を取得します。

print("\nShape of our Array object...\n",arr.shape)

線形代数における行列の条件数を計算するために、numpy.linalg.cond() メソッドを使用します。

print("\nResult...\n",LA.cond(arr, 2))

サンプルコード

import numpy as np
from numpy import linalg as LA

# 配列を作成
arr = np.array([[ 1, 1, 0], [1, 0, 1], [1, 0, 0]])

# 配列を表示
print("Our Array...\n",arr)

# 次元を確認
print("\nDimensions of our Array...\n",arr.ndim)

# データ型を取得
print("\nDatatype of our Array object...\n",arr.dtype)

# 形状を取得
print("\nShape of our Array object...\n",arr.shape)

# numpy.linalg.cond() メソッドで行列の条件数を計算
print("\nResult...\n",LA.cond(arr, 2))

実行結果

Our Array...
[[1 1 0]
[1 0 1]
[1 0 0]]

Dimensions of our Array...
2

Datatype of our Array object...
int64

Shape of our Array object...
(3, 3)

Result...
3.7320508075688776

  1. Pythonで複素エルミート行列・実対称行列の固有値を求める方法(numpy.eigvalsh)

    Pythonで複素エルミート行列や実対称行列の固有値を計算したい場合は、NumPyの numpy.eigvalsh() メソッドを使うのが便利です。このメソッドは、固有値を昇順で返し、重複度に応じて同じ固有値を繰り返し出力します。主な引数は以下の通りです。第1引数 a: 固有値を計算したい複素数または実数の行列を指定します。第2引数 UPLO: 行列のどちらの三角部分を使って計算するかを指定します。デフォルトは L(下三角部分)、U を指定すると上三角部分が使用されます。なお、この指定に関わらず、エルミート行列の性質を保つため、対角成分については実部のみが計算に使われ、虚部は常にゼロとして扱わ

  2. 【Python入門】numpy.linalg.cholesky()でコレスキー分解を求める方法

    線形代数におけるコレスキー分解(Cholesky decomposition)とは、エルミート行列かつ正定値である正方行列 a を、下三角行列 L とその共役転置 LH の積「L * LH」に分解する手法です。NumPyでは numpy.linalg.cholesky() メソッドを使うことで、この分解を簡単に求めることができます。numpy.linalg.cholesky()メソッドの概要numpy.linalg.cholesky() は、引数として渡された正方行列のコレスキー分解を計算し、下三角行列 L を返します。このメソッドには以下のような特徴があります。前提条件: 入力行列 a はエ