Gershgorin circle theorem

===

import numpy as np

# Input matrix A
A = np.array([[3+2j, -1+4j, 2-3j], [2-1j, 1+2j, 3-2j], [1+3j, 1-1j, -1+2j]])

# Check if A is a square matrix
if A.shape[0] != A.shape[1]:
print("A is not a square matrix!")
else:
n = A.shape[0]
eigenvalues = np.linalg.eigvals(A)

# Check each eigenvalue
for eig in eigenvalues:
# Check if eig is within at least one disk
inside_disk = False
for i in range(n):
# Compute the disk centered at A[i, i]
disk_center = A[i, i]
disk_radius = np.sum(np.abs(A[i, :])) - np.abs(A[i, i])

# Check if eig is within the disk
if np.abs(eig - disk_center) <= disk_radius:
inside_disk = True
break

if inside_disk:
print(f"The eigenvalue {eig} is within at least one disk.")
else:
print(f"The eigenvalue {eig} is not within any disk.")

===

Gershgorin circle theorem

 

どの固有値も少なくとも一つのGershgorin円板の中にある。

ここで、ゲルシュゴリン円板とは、対角要素を中心として、それに対応する行の非対角成分の絶対値の和を半径とする円板のことである。

 

固有値の存在できる領域を円板の和集合で表現できる点で使いやすいのだろう。