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

Pythonの線形代数で行列の無限大ノルム(∞ノルム)を求める方法

線形代数において行列やベクトルのノルムを計算するには、Python NumPyのLA.norm()メソッドを使用します。無限大ノルム(∞ノルム)を求めたい場合は、第2引数のordnp.infを指定します。

行列における無限大ノルムとは、各行の要素の絶対値の合計の中で最大の値を指します。この記事では、具体的なサンプルコードとともにその使い方をわかりやすく解説します。

LA.norm()メソッドの主なパラメータ

  • x(第1引数):入力配列です。axisがNoneの場合、xは1次元または2次元である必要があります(ordがNoneでない場合)。また、axisordがどちらもNoneの場合は、x.ravel()の2ノルムが返されます。
  • ord(第2引数):ノルムの次数を指定します。infはNumPyのnp.infオブジェクトを意味し、無限大ノルムを表します。デフォルトはNoneです。
  • axis(第3引数):整数を指定した場合、ベクトルノルムを計算する対象の軸を指定します。2要素のタプルを指定した場合は、2次元行列を保持する軸を意味し、それらの行列に対して行列ノルムが計算されます。Noneの場合、xが1次元ならベクトルノルム、2次元なら行列ノルムが返されます。
  • keepdims(第4引数):Trueに設定すると、ノルムを計算した軸がサイズ1の次元として結果に残ります。このオプションにより、元の配列xに対して正しくブロードキャストできるようになります。

実行手順

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

import numpy as np
from numpy import linalg as LA

次に、配列を作成します。

arr = np.array([[ -4, -3, -2],
   [-1, 0, 1],
   [2, 3, 4] ])

作成した配列を表示します。

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)

最後に、LA.norm()メソッドを使って行列の無限大ノルムを計算します。

print("\nResult...\n",LA.norm(arr, np.inf))

完全なサンプルコード

import numpy as np
from numpy import linalg as LA

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

# 配列を表示
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)

# LA.norm()メソッドで無限大ノルムを計算
print("\nResult...\n",LA.norm(arr, np.inf))

実行結果

Our Array...
[[-4 -3 -2]
[-1 0 1]
[ 2 3 4]]

Dimensions of our Array...
2

Datatype of our Array object...
int64

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

Result...
9.0

結果の解説

この例では、無限大ノルムは「各行の要素の絶対値の合計」の最大値として計算されます。

  • 1行目:|-4| + |-3| + |-2| = 9
  • 2行目:|-1| + |0| + |1| = 2
  • 3行目:|2| + |3| + |4| = 9

最大値は9となるため、実行結果は9.0となります。このように、LA.norm(arr, np.inf)を使うことで、行列の無限大ノルムを簡単に求めることができます。

  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 はエ