Application Center - Maplesoft

App Preview:

Visualize the Gerschgorin Circle Theorem

You can switch back to the summary page by clicking here.

Learn about Maple
Download Application


 

Image 

Gerschgorin Circle Theorem 

Wm C Bauldry 

Appalachian State University 

 

The eigenvalues of a (complex) matrix lie in circles determined by the row-norms centered on the diagonal elements. This worksheet contains the function Gerschgorin that builds a plot to visualize the theorem. The syntax is simple: Gerschgorin(<Matrix>). A plot structure is returned showing the "Gerschgorin circles" with blue centers and the associated eigenvalue as a red box. 

The 'Gerschgorin' function. 

> Gerschgorin := proc (A::Matrix) local Delta, m, n, AA, R, C, i, c, eig, P, Plt; Delta := proc (i, j) if i = j then 0 else 1 end if end proc; m, n := LinearAlgebra[Dimension](A); AA := Matrix(m, n, pro...
Gerschgorin := proc (A::Matrix) local Delta, m, n, AA, R, C, i, c, eig, P, Plt; Delta := proc (i, j) if i = j then 0 else 1 end if end proc; m, n := LinearAlgebra[Dimension](A); AA := Matrix(m, n, pro...
Gerschgorin := proc (A::Matrix) local Delta, m, n, AA, R, C, i, c, eig, P, Plt; Delta := proc (i, j) if i = j then 0 else 1 end if end proc; m, n := LinearAlgebra[Dimension](A); AA := Matrix(m, n, pro...
Gerschgorin := proc (A::Matrix) local Delta, m, n, AA, R, C, i, c, eig, P, Plt; Delta := proc (i, j) if i = j then 0 else 1 end if end proc; m, n := LinearAlgebra[Dimension](A); AA := Matrix(m, n, pro...
Gerschgorin := proc (A::Matrix) local Delta, m, n, AA, R, C, i, c, eig, P, Plt; Delta := proc (i, j) if i = j then 0 else 1 end if end proc; m, n := LinearAlgebra[Dimension](A); AA := Matrix(m, n, pro...
Gerschgorin := proc (A::Matrix) local Delta, m, n, AA, R, C, i, c, eig, P, Plt; Delta := proc (i, j) if i = j then 0 else 1 end if end proc; m, n := LinearAlgebra[Dimension](A); AA := Matrix(m, n, pro...
Gerschgorin := proc (A::Matrix) local Delta, m, n, AA, R, C, i, c, eig, P, Plt; Delta := proc (i, j) if i = j then 0 else 1 end if end proc; m, n := LinearAlgebra[Dimension](A); AA := Matrix(m, n, pro...
Gerschgorin := proc (A::Matrix) local Delta, m, n, AA, R, C, i, c, eig, P, Plt; Delta := proc (i, j) if i = j then 0 else 1 end if end proc; m, n := LinearAlgebra[Dimension](A); AA := Matrix(m, n, pro...
Gerschgorin := proc (A::Matrix) local Delta, m, n, AA, R, C, i, c, eig, P, Plt; Delta := proc (i, j) if i = j then 0 else 1 end if end proc; m, n := LinearAlgebra[Dimension](A); AA := Matrix(m, n, pro...
Gerschgorin := proc (A::Matrix) local Delta, m, n, AA, R, C, i, c, eig, P, Plt; Delta := proc (i, j) if i = j then 0 else 1 end if end proc; m, n := LinearAlgebra[Dimension](A); AA := Matrix(m, n, pro...
Gerschgorin := proc (A::Matrix) local Delta, m, n, AA, R, C, i, c, eig, P, Plt; Delta := proc (i, j) if i = j then 0 else 1 end if end proc; m, n := LinearAlgebra[Dimension](A); AA := Matrix(m, n, pro...
Gerschgorin := proc (A::Matrix) local Delta, m, n, AA, R, C, i, c, eig, P, Plt; Delta := proc (i, j) if i = j then 0 else 1 end if end proc; m, n := LinearAlgebra[Dimension](A); AA := Matrix(m, n, pro...
Gerschgorin := proc (A::Matrix) local Delta, m, n, AA, R, C, i, c, eig, P, Plt; Delta := proc (i, j) if i = j then 0 else 1 end if end proc; m, n := LinearAlgebra[Dimension](A); AA := Matrix(m, n, pro...
Gerschgorin := proc (A::Matrix) local Delta, m, n, AA, R, C, i, c, eig, P, Plt; Delta := proc (i, j) if i = j then 0 else 1 end if end proc; m, n := LinearAlgebra[Dimension](A); AA := Matrix(m, n, pro...
Gerschgorin := proc (A::Matrix) local Delta, m, n, AA, R, C, i, c, eig, P, Plt; Delta := proc (i, j) if i = j then 0 else 1 end if end proc; m, n := LinearAlgebra[Dimension](A); AA := Matrix(m, n, pro...
Gerschgorin := proc (A::Matrix) local Delta, m, n, AA, R, C, i, c, eig, P, Plt; Delta := proc (i, j) if i = j then 0 else 1 end if end proc; m, n := LinearAlgebra[Dimension](A); AA := Matrix(m, n, pro...
Gerschgorin := proc (A::Matrix) local Delta, m, n, AA, R, C, i, c, eig, P, Plt; Delta := proc (i, j) if i = j then 0 else 1 end if end proc; m, n := LinearAlgebra[Dimension](A); AA := Matrix(m, n, pro...
Gerschgorin := proc (A::Matrix) local Delta, m, n, AA, R, C, i, c, eig, P, Plt; Delta := proc (i, j) if i = j then 0 else 1 end if end proc; m, n := LinearAlgebra[Dimension](A); AA := Matrix(m, n, pro...
 

Examples 

A matrix with real enties and one with complex entries; both have complex eigenvalues. 

> A := Matrix([[5, 8, 4, -3], [8, -9, 7, 5], [0, 4, 4, 2], [5, -5, 9, -9]]); 1; evalf(LinearAlgebra[Eigenvalues](A), 3); 1; Gerschgorin(A); 1
A := Matrix([[5, 8, 4, -3], [8, -9, 7, 5], [0, 4, 4, 2], [5, -5, 9, -9]]); 1; evalf(LinearAlgebra[Eigenvalues](A), 3); 1; Gerschgorin(A); 1
A := Matrix([[5, 8, 4, -3], [8, -9, 7, 5], [0, 4, 4, 2], [5, -5, 9, -9]]); 1; evalf(LinearAlgebra[Eigenvalues](A), 3); 1; Gerschgorin(A); 1
 

A := Matrix(%id = 152836044) 

(Typesetting:-mprintslash)([Vector[column]([[10.9], [3.76], [-11.8+6.01*I], [-11.8-6.01*I]])], [Vector[column](%id = 20833568)]) 

Plot 

> B := Matrix([[3+I, 3-I, -3+`*`(2, I), 1+`*`(3, I)], [-1-`*`(2, I), 1-`*`(2, I), 1-`*`(2, I), 3-`*`(2, I)], [-3-I, 3-`*`(3, I), -1+`*`(2, I), 2+I], [1+I, -2-I, 3-I, -3+I]]); 1; evalf[4](LinearAlgebra[E...
B := Matrix([[3+I, 3-I, -3+`*`(2, I), 1+`*`(3, I)], [-1-`*`(2, I), 1-`*`(2, I), 1-`*`(2, I), 3-`*`(2, I)], [-3-I, 3-`*`(3, I), -1+`*`(2, I), 2+I], [1+I, -2-I, 3-I, -3+I]]); 1; evalf[4](LinearAlgebra[E...
B := Matrix([[3+I, 3-I, -3+`*`(2, I), 1+`*`(3, I)], [-1-`*`(2, I), 1-`*`(2, I), 1-`*`(2, I), 3-`*`(2, I)], [-3-I, 3-`*`(3, I), -1+`*`(2, I), 2+I], [1+I, -2-I, 3-I, -3+I]]); 1; evalf[4](LinearAlgebra[E...
B := Matrix([[3+I, 3-I, -3+`*`(2, I), 1+`*`(3, I)], [-1-`*`(2, I), 1-`*`(2, I), 1-`*`(2, I), 3-`*`(2, I)], [-3-I, 3-`*`(3, I), -1+`*`(2, I), 2+I], [1+I, -2-I, 3-I, -3+I]]); 1; evalf[4](LinearAlgebra[E...
 

B := Matrix(%id = 147958296) 

(Typesetting:-mprintslash)([Vector[column]([[2.582-3.856*I], [-1.338+4.912*I], [3.871+.7074*I], [-5.115+.2360*I]])], [Vector[column](%id = 21522560)]) 

Plot 

An Animation 

Animation showing the effect of perturbing a single matrix element on the eigenvalues of the matrix B from above. 

> gen := proc (i, j) if 1 < i*j then 0 else 1 end if end proc; -1; f := proc (A, k) options operator, arrow; A+k*Matrix(LinearAlgebra[Dimension](A), gen) end proc; -1; matseq := [seq(f(B, 1/4*k), k = 0 ...
gen := proc (i, j) if 1 < i*j then 0 else 1 end if end proc; -1; f := proc (A, k) options operator, arrow; A+k*Matrix(LinearAlgebra[Dimension](A), gen) end proc; -1; matseq := [seq(f(B, 1/4*k), k = 0 ...
gen := proc (i, j) if 1 < i*j then 0 else 1 end if end proc; -1; f := proc (A, k) options operator, arrow; A+k*Matrix(LinearAlgebra[Dimension](A), gen) end proc; -1; matseq := [seq(f(B, 1/4*k), k = 0 ...
gen := proc (i, j) if 1 < i*j then 0 else 1 end if end proc; -1; f := proc (A, k) options operator, arrow; A+k*Matrix(LinearAlgebra[Dimension](A), gen) end proc; -1; matseq := [seq(f(B, 1/4*k), k = 0 ...
gen := proc (i, j) if 1 < i*j then 0 else 1 end if end proc; -1; f := proc (A, k) options operator, arrow; A+k*Matrix(LinearAlgebra[Dimension](A), gen) end proc; -1; matseq := [seq(f(B, 1/4*k), k = 0 ...
 

(Typesetting:-mprintslash)([matseq := [Matrix([[3+I, 3-I, -3+2*I, 1+3*I], [-1-2*I, 1-2*I, 1-2*I, 3-2*I], [-3-I, 3-3*I, -1+2*I, 2+I], [1+I, -2-I, 3-I, -3+I]]), Matrix([[13/4+I, 3-I, -3+2*I, 1+3*I], [-1...
(Typesetting:-mprintslash)([matseq := [Matrix([[3+I, 3-I, -3+2*I, 1+3*I], [-1-2*I, 1-2*I, 1-2*I, 3-2*I], [-3-I, 3-3*I, -1+2*I, 2+I], [1+I, -2-I, 3-I, -3+I]]), Matrix([[13/4+I, 3-I, -3+2*I, 1+3*I], [-1...
 

Plot 

>
 

 

Legal Notice: The copyright for this application is owned by the author(s). Neither Maplesoft nor the author are responsible for any errors contained within and are not liable for any damages resulting from the use of this material. This application is intended for non-commercial, non-profit use only. Contact the author for permission if you wish to use this application in for-profit activities.
 

Image