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

Pythonのnumpy.linalg.cond()で負の無限大ノルムを使って行列の条件数を計算する方法

線形代数において行列の条件数を計算するには、Pythonのnumpy.linalg.cond()メソッドを使用します。このメソッドは、引数 p の値に応じて7種類の異なるノルムから条件数を算出でき、その結果は無限大になる場合もあります。

行列 x の条件数は、「x のノルム」と「x の逆行列のノルム」の積として定義されます。ここで使うノルムには、一般的なL2ノルムのほか、さまざまな行列ノルムを指定できます。

  • 第1パラメータ:x ― 条件数を求めたい対象となる行列
  • 第2パラメータ:p ― 条件数の計算に使用するノルムの種類(次数)

本記事では、p に「-inf(負の無限大)」を指定して、負の無限大ノルムによる条件数を計算する方法を解説します。

計算の手順

1. 必要なライブラリをインポートする

まず、NumPyと線形代数モジュールをインポートします。

import numpy as np
from numpy import linalg as LA

2. 配列(行列)を作成する

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

3. 配列を表示する

print("配列の内容...\n",arr)

4. 次元を確認する

print("\n配列の次元...\n",arr.ndim)

5. データ型を確認する

print("\n配列オブジェクトのデータ型...\n",arr.dtype)

6. 形状を確認する

print("\n配列オブジェクトの形状...\n",arr.shape)

7. 条件数を計算する

numpy.linalg.cond()メソッドに、作成した配列と -np.inf を渡すことで、負の無限大ノルムに基づく条件数が得られます。

print("\n計算結果...\n",LA.cond(arr, -np.inf))

完全なサンプルコード

import numpy as np
from numpy import linalg as LA

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

# 配列を表示
print("配列の内容...\n",arr)

# 次元を確認
print("\n配列の次元...\n",arr.ndim)

# データ型を確認
print("\n配列オブジェクトのデータ型...\n",arr.dtype)

# 形状を確認
print("\n配列オブジェクトの形状...\n",arr.shape)

# 負の無限大ノルムで条件数を計算
print("\n計算結果...\n",LA.cond(arr, -np.inf))

実行結果

配列の内容...
[[1 1 0]
[1 0 1]
[1 0 0]]

配列の次元...
2

配列オブジェクトのデータ型...
int64

配列オブジェクトの形状...
(3, 3)

計算結果...
1.0

実行結果から、この3×3行列の負の無限大ノルムによる条件数は 1.0 であることがわかります。条件数が1に近いということは、この行列が数値的に非常に安定しており、逆行列の計算などに対して誤差が生じにくい行列であることを示しています。

  1. Python NumPyのlinalg.norm()で行列・ベクトルのノルムを計算する方法

    線形代数において行列またはベクトルのノルム(Norm)を返すには、Python NumPyのnumpy.linalg.norm()メソッドを使用します。この記事では、LA.norm()メソッドの基本的な使い方と各パラメータの意味を、実際のコード例とともにわかりやすく解説します。numpy.linalg.norm()メソッドのパラメータ第1引数:xノルムを計算する対象となる入力配列です。axisがNoneの場合、xは1次元または2次元である必要があります(ordがNoneの場合を除く)。axisとordがどちらもNoneの場合は、x.ravel()の2-ノルムが返されます。第2引数:ordノルム

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

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