Question: Wrong values for Eigenvalues, depending on Digits and datatype

Hello!

I want to calculate Eigenvalues. Depending on values for digits and which datatype I choose Maple sometimes returns zero as Eigenvalues. Maybe there is a problem with the used routines: CLAPACK sw_dgeevx_, CLAPACK sw_zgeevx_.

Thank you for your suggestions!
 

``

 

Problems LinearAlgebra:-Eigenvalues, Digits, ':-datatype' = ':-sfloat', ':-datatype' = ':-complex'( ':-sfloat' )

 

restart;

interface( ':-displayprecision' = 5 ):
 

infolevel['LinearAlgebra'] := 5;
myPlatform := kernelopts( ':-platform' );
myVersion := kernelopts( ':-version' );

5

 

"windows"

 

`Maple 2018.2, X86 64 WINDOWS, Nov 16 2018, Build ID 1362973`

(1.1)

Example 1

 

A1 := Matrix( 5, 5, [[0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1], [-10201/1000, 30199/10000, -5049/250, 97/50, -48/5]] );

Matrix(5, 5, {(1, 1) = 0, (1, 2) = 1, (1, 3) = 0, (1, 4) = 0, (1, 5) = 0, (2, 1) = 0, (2, 2) = 0, (2, 3) = 1, (2, 4) = 0, (2, 5) = 0, (3, 1) = 0, (3, 2) = 0, (3, 3) = 0, (3, 4) = 1, (3, 5) = 0, (4, 1) = 0, (4, 2) = 0, (4, 3) = 0, (4, 4) = 0, (4, 5) = 1, (5, 1) = -10201/1000, (5, 2) = 30199/10000, (5, 3) = -5049/250, (5, 4) = 97/50, (5, 5) = -48/5})

(1.1.1)

LinearAlgebra:-Eigenvalues( A1 );

CharacteristicPolynomial: working on determinant of minor 2
CharacteristicPolynomial: working on determinant of minor 3
CharacteristicPolynomial: working on determinant of minor 4
CharacteristicPolynomial: working on determinant of minor 5

 

Vector(5, {(1) = -10, (2) = 1/10+I, (3) = 1/10-I, (4) = 1/10+I, (5) = 1/10-I})

(1.1.2)

A11 := Matrix( op( 1, A1 ),( i,j ) -> evalf( A1[i,j] ), ':-datatype' = ':-sfloat' );

Matrix(5, 5, {(1, 1) = 0., (1, 2) = 1.00000, (1, 3) = 0., (1, 4) = 0., (1, 5) = 0., (2, 1) = 0., (2, 2) = 0., (2, 3) = 1.00000, (2, 4) = 0., (2, 5) = 0., (3, 1) = 0., (3, 2) = 0., (3, 3) = 0., (3, 4) = 1.00000, (3, 5) = 0., (4, 1) = 0., (4, 2) = 0., (4, 3) = 0., (4, 4) = 0., (4, 5) = 1.00000, (5, 1) = -10.20100, (5, 2) = 3.01990, (5, 3) = -20.19600, (5, 4) = 1.94000, (5, 5) = -9.60000})

(1.1.3)

Digits := 89;
LinearAlgebra:-Eigenvalues( A11 );

Digits := 89

 

Eigenvalues: calling external function
Eigenvalues: initializing the output object
Eigenvalues: using software external library
Eigenvalues: CLAPACK sw_dgeevx_

 

Vector[column](%id = 18446745881249354686)

(1.1.4)

Digits := 90;
LinearAlgebra:-Eigenvalues( A11 );

Digits := 90

 

Eigenvalues: calling external function
Eigenvalues: initializing the output object
Eigenvalues: using software external library
Eigenvalues: CLAPACK sw_dgeevx_

 

Vector[column](%id = 18446745881249352150)

(1.1.5)

A12 := Matrix( op( 1, A1 ),( i,j ) -> evalf( A1[i,j] ), ':-datatype' = ':-complex'( ':-sfloat' ) );

Matrix(5, 5, {(1, 1) = 0.+0.*I, (1, 2) = 1.00000+0.*I, (1, 3) = 0.+0.*I, (1, 4) = 0.+0.*I, (1, 5) = 0.+0.*I, (2, 1) = 0.+0.*I, (2, 2) = 0.+0.*I, (2, 3) = 1.00000+0.*I, (2, 4) = 0.+0.*I, (2, 5) = 0.+0.*I, (3, 1) = 0.+0.*I, (3, 2) = 0.+0.*I, (3, 3) = 0.+0.*I, (3, 4) = 1.00000+0.*I, (3, 5) = 0.+0.*I, (4, 1) = 0.+0.*I, (4, 2) = 0.+0.*I, (4, 3) = 0.+0.*I, (4, 4) = 0.+0.*I, (4, 5) = 1.00000+0.*I, (5, 1) = -10.20100+0.*I, (5, 2) = 3.01990+0.*I, (5, 3) = -20.19600+0.*I, (5, 4) = 1.94000+0.*I, (5, 5) = -9.60000+0.*I})

(1.1.6)

Digits := 100;
LinearAlgebra:-Eigenvalues( A12 );

Digits := 100

 

Eigenvalues: calling external function
Eigenvalues: initializing the output object
Eigenvalues: using software external library
Eigenvalues: CLAPACK sw_zgeevx_

 

Vector[column](%id = 18446745881249345038)

(1.1.7)

Digits := 250;
LinearAlgebra:-Eigenvalues( A12 );

Digits := 250

 

Eigenvalues: calling external function
Eigenvalues: initializing the output object
Eigenvalues: using software external library
Eigenvalues: CLAPACK sw_zgeevx_

 

Vector[column](%id = 18446745881342643606)

(1.1.8)

 

 

Example 2

 

A2 := Matrix(3, 3, [[0, 1, 0], [0, 0, 1], [3375, -675, 45]]);

Matrix(3, 3, {(1, 1) = 0, (1, 2) = 1, (1, 3) = 0, (2, 1) = 0, (2, 2) = 0, (2, 3) = 1, (3, 1) = 3375, (3, 2) = -675, (3, 3) = 45})

(1.2.1)

LinearAlgebra:-Eigenvalues( A2 );

IntegerCharacteristicPolynomial: Computing characteristic polynomial for a 3 x 3 matrix

IntegerCharacteristicPolynomial: Using prime 33554393
IntegerCharacteristicPolynomial: Using prime 33554383
IntegerCharacteristicPolynomial: Used total of  2  prime(s)

 

Vector(3, {(1) = 15, (2) = 15, (3) = 15})

(1.2.2)

A21 := Matrix( op( 1, A2 ),( i,j ) -> evalf( A2[i,j] ), ':-datatype' = ':-sfloat' );

Matrix(3, 3, {(1, 1) = 0., (1, 2) = 1.00000, (1, 3) = 0., (2, 1) = 0., (2, 2) = 0., (2, 3) = 1.00000, (3, 1) = 3375.00000, (3, 2) = -675.00000, (3, 3) = 45.00000})

(1.2.3)

Digits := 77;
LinearAlgebra:-Eigenvalues( A21 );

Digits := 77

 

Eigenvalues: calling external function
Eigenvalues: initializing the output object
Eigenvalues: using software external library
Eigenvalues: CLAPACK sw_dgeevx_

 

Vector[column](%id = 18446745881342621686)

(1.2.4)

Digits := 78;
LinearAlgebra:-Eigenvalues( A21 );

Digits := 78

 

Eigenvalues: calling external function
Eigenvalues: initializing the output object
Eigenvalues: using software external library
Eigenvalues: CLAPACK sw_dgeevx_

 

Vector[column](%id = 18446745881342617230)

(1.2.5)

A22 := Matrix( op( 1, A2 ),( i,j ) -> evalf( A2[i,j] ), ':-datatype' = ':-complex'( ':-sfloat' ) );

Matrix(3, 3, {(1, 1) = 0.+0.*I, (1, 2) = 1.00000+0.*I, (1, 3) = 0.+0.*I, (2, 1) = 0.+0.*I, (2, 2) = 0.+0.*I, (2, 3) = 1.00000+0.*I, (3, 1) = 3375.00000+0.*I, (3, 2) = -675.00000+0.*I, (3, 3) = 45.00000+0.*I})

(1.2.6)

Digits := 58;
LinearAlgebra:-Eigenvalues( A22 );

Digits := 58

 

Eigenvalues: calling external function
Eigenvalues: initializing the output object
Eigenvalues: using software external library
Eigenvalues: CLAPACK sw_zgeevx_

 

Vector[column](%id = 18446745881342614934)

(1.2.7)

Digits := 59;
LinearAlgebra:-Eigenvalues( A22 );

Digits := 59

 

Eigenvalues: calling external function
Eigenvalues: initializing the output object
Eigenvalues: using software external library
Eigenvalues: CLAPACK sw_zgeevx_

 

Vector[column](%id = 18446745881325525942)

(1.2.8)

 

 

Example 3

 

A3 := Matrix(4, 4, [[0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1], [-48841, 8840, -842, 40]]);

Matrix(4, 4, {(1, 1) = 0, (1, 2) = 1, (1, 3) = 0, (1, 4) = 0, (2, 1) = 0, (2, 2) = 0, (2, 3) = 1, (2, 4) = 0, (3, 1) = 0, (3, 2) = 0, (3, 3) = 0, (3, 4) = 1, (4, 1) = -48841, (4, 2) = 8840, (4, 3) = -842, (4, 4) = 40})

(1.3.1)

LinearAlgebra:-Eigenvalues( A3 );

IntegerCharacteristicPolynomial: Computing characteristic polynomial for a 4 x 4 matrix
IntegerCharacteristicPolynomial: Using prime 33554393

IntegerCharacteristicPolynomial: Using prime 33554383
IntegerCharacteristicPolynomial: Used total of  2  prime(s)

 

Vector(4, {(1) = 10+11*I, (2) = 10-11*I, (3) = 10+11*I, (4) = 10-11*I})

(1.3.2)

A31 := Matrix( op( 1, A3 ),( i,j ) -> evalf( A3[i,j] ), ':-datatype' = ':-sfloat' );

Matrix(4, 4, {(1, 1) = 0., (1, 2) = 1.00000, (1, 3) = 0., (1, 4) = 0., (2, 1) = 0., (2, 2) = 0., (2, 3) = 1.00000, (2, 4) = 0., (3, 1) = 0., (3, 2) = 0., (3, 3) = 0., (3, 4) = 1.00000, (4, 1) = -48841.00000, (4, 2) = 8840.00000, (4, 3) = -842.00000, (4, 4) = 40.00000})

(1.3.3)

Digits := 75;
LinearAlgebra:-Eigenvalues( A31 );

Digits := 75

 

Eigenvalues: calling external function
Eigenvalues: initializing the output object
Eigenvalues: using software external library
Eigenvalues: CLAPACK sw_dgeevx_

 

Vector[column](%id = 18446745881324662046)

(1.3.4)

Digits := 76;
LinearAlgebra:-Eigenvalues( A31 );

Digits := 76

 

Eigenvalues: calling external function
Eigenvalues: initializing the output object
Eigenvalues: using software external library
Eigenvalues: CLAPACK sw_dgeevx_

 

Vector[column](%id = 18446745881324657710)

(1.3.5)

A32 := Matrix( op( 1, A3 ),( i,j ) -> evalf( A3[i,j] ), ':-datatype' = ':-complex'( ':-sfloat' ) );

Matrix(4, 4, {(1, 1) = 0.+0.*I, (1, 2) = 1.00000+0.*I, (1, 3) = 0.+0.*I, (1, 4) = 0.+0.*I, (2, 1) = 0.+0.*I, (2, 2) = 0.+0.*I, (2, 3) = 1.00000+0.*I, (2, 4) = 0.+0.*I, (3, 1) = 0.+0.*I, (3, 2) = 0.+0.*I, (3, 3) = 0.+0.*I, (3, 4) = 1.00000+0.*I, (4, 1) = -48841.00000+0.*I, (4, 2) = 8840.00000+0.*I, (4, 3) = -842.00000+0.*I, (4, 4) = 40.00000+0.*I})

(1.3.6)

Digits := 100;
LinearAlgebra:-Eigenvalues( A32 );

Digits := 100

 

Eigenvalues: calling external function
Eigenvalues: initializing the output object
Eigenvalues: using software external library
Eigenvalues: CLAPACK sw_zgeevx_

 

Vector[column](%id = 18446745881324648198)

(1.3.7)

Digits := 250;
LinearAlgebra:-Eigenvalues( A32 );

Digits := 250

 

Eigenvalues: calling external function
Eigenvalues: initializing the output object
Eigenvalues: using software external library
Eigenvalues: CLAPACK sw_zgeevx_

 

Vector[column](%id = 18446745881327288182)

(1.3.8)

 

 

Example 4

 

A4 := Matrix(8, 8, [[0, 1, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 1], [-1050625/20736, 529925/1296, -15417673/10368, 3622249/1296, -55468465/20736, 93265/108, -1345/8, 52/3]]);

Matrix(8, 8, {(1, 1) = 0, (1, 2) = 1, (1, 3) = 0, (1, 4) = 0, (1, 5) = 0, (1, 6) = 0, (1, 7) = 0, (1, 8) = 0, (2, 1) = 0, (2, 2) = 0, (2, 3) = 1, (2, 4) = 0, (2, 5) = 0, (2, 6) = 0, (2, 7) = 0, (2, 8) = 0, (3, 1) = 0, (3, 2) = 0, (3, 3) = 0, (3, 4) = 1, (3, 5) = 0, (3, 6) = 0, (3, 7) = 0, (3, 8) = 0, (4, 1) = 0, (4, 2) = 0, (4, 3) = 0, (4, 4) = 0, (4, 5) = 1, (4, 6) = 0, (4, 7) = 0, (4, 8) = 0, (5, 1) = 0, (5, 2) = 0, (5, 3) = 0, (5, 4) = 0, (5, 5) = 0, (5, 6) = 1, (5, 7) = 0, (5, 8) = 0, (6, 1) = 0, (6, 2) = 0, (6, 3) = 0, (6, 4) = 0, (6, 5) = 0, (6, 6) = 0, (6, 7) = 1, (6, 8) = 0, (7, 1) = 0, (7, 2) = 0, (7, 3) = 0, (7, 4) = 0, (7, 5) = 0, (7, 6) = 0, (7, 7) = 0, (7, 8) = 1, (8, 1) = -1050625/20736, (8, 2) = 529925/1296, (8, 3) = -15417673/10368, (8, 4) = 3622249/1296, (8, 5) = -55468465/20736, (8, 6) = 93265/108, (8, 7) = -1345/8, (8, 8) = 52/3})

(1.4.1)

LinearAlgebra:-Eigenvalues( A4 );

CharacteristicPolynomial: working on determinant of minor 2
CharacteristicPolynomial: working on determinant of minor 3

CharacteristicPolynomial: working on determinant of minor 4
CharacteristicPolynomial: working on determinant of minor 5
CharacteristicPolynomial: working on determinant of minor 6
CharacteristicPolynomial: working on determinant of minor 7
CharacteristicPolynomial: working on determinant of minor 8

 

Vector(8, {(1) = 1/3-(1/4)*I, (2) = 1/3+(1/4)*I, (3) = 4-5*I, (4) = 4+5*I, (5) = 1/3-(1/4)*I, (6) = 1/3+(1/4)*I, (7) = 4-5*I, (8) = 4+5*I})

(1.4.2)

A41 := Matrix( op( 1, A4 ),( i,j ) -> evalf( A4[i,j] ), ':-datatype' = ':-sfloat' );

Matrix(8, 8, {(1, 1) = 0., (1, 2) = 1.00000, (1, 3) = 0., (1, 4) = 0., (1, 5) = 0., (1, 6) = 0., (1, 7) = 0., (1, 8) = 0., (2, 1) = 0., (2, 2) = 0., (2, 3) = 1.00000, (2, 4) = 0., (2, 5) = 0., (2, 6) = 0., (2, 7) = 0., (2, 8) = 0., (3, 1) = 0., (3, 2) = 0., (3, 3) = 0., (3, 4) = 1.00000, (3, 5) = 0., (3, 6) = 0., (3, 7) = 0., (3, 8) = 0., (4, 1) = 0., (4, 2) = 0., (4, 3) = 0., (4, 4) = 0., (4, 5) = 1.00000, (4, 6) = 0., (4, 7) = 0., (4, 8) = 0., (5, 1) = 0., (5, 2) = 0., (5, 3) = 0., (5, 4) = 0., (5, 5) = 0., (5, 6) = 1.00000, (5, 7) = 0., (5, 8) = 0., (6, 1) = 0., (6, 2) = 0., (6, 3) = 0., (6, 4) = 0., (6, 5) = 0., (6, 6) = 0., (6, 7) = 1.00000, (6, 8) = 0., (7, 1) = 0., (7, 2) = 0., (7, 3) = 0., (7, 4) = 0., (7, 5) = 0., (7, 6) = 0., (7, 7) = 0., (7, 8) = 1.00000, (8, 1) = -50.66671, (8, 2) = 408.89275, (8, 3) = -1487.04408, (8, 4) = 2794.94522, (8, 5) = -2674.98384, (8, 6) = 863.56481, (8, 7) = -168.12500, (8, 8) = 17.33333})

(1.4.3)

Digits := 74;
LinearAlgebra:-Eigenvalues( A41 );

Digits := 74

 

Eigenvalues: calling external function
Eigenvalues: initializing the output object
Eigenvalues: using software external library
Eigenvalues: CLAPACK sw_dgeevx_

 

Vector[column](%id = 18446745881317242630)

(1.4.4)

Digits := 75;
LinearAlgebra:-Eigenvalues( A41 );

Digits := 75

 

Eigenvalues: calling external function
Eigenvalues: initializing the output object
Eigenvalues: using software external library
Eigenvalues: CLAPACK sw_dgeevx_

 

Vector[column](%id = 18446745881317239134)

(1.4.5)

A42 := Matrix( op( 1, A4 ),( i,j ) -> evalf( A4[i,j] ), ':-datatype' = ':-complex'( ':-sfloat' ) );

Matrix(8, 8, {(1, 1) = 0.+0.*I, (1, 2) = 1.00000+0.*I, (1, 3) = 0.+0.*I, (1, 4) = 0.+0.*I, (1, 5) = 0.+0.*I, (1, 6) = 0.+0.*I, (1, 7) = 0.+0.*I, (1, 8) = 0.+0.*I, (2, 1) = 0.+0.*I, (2, 2) = 0.+0.*I, (2, 3) = 1.00000+0.*I, (2, 4) = 0.+0.*I, (2, 5) = 0.+0.*I, (2, 6) = 0.+0.*I, (2, 7) = 0.+0.*I, (2, 8) = 0.+0.*I, (3, 1) = 0.+0.*I, (3, 2) = 0.+0.*I, (3, 3) = 0.+0.*I, (3, 4) = 1.00000+0.*I, (3, 5) = 0.+0.*I, (3, 6) = 0.+0.*I, (3, 7) = 0.+0.*I, (3, 8) = 0.+0.*I, (4, 1) = 0.+0.*I, (4, 2) = 0.+0.*I, (4, 3) = 0.+0.*I, (4, 4) = 0.+0.*I, (4, 5) = 1.00000+0.*I, (4, 6) = 0.+0.*I, (4, 7) = 0.+0.*I, (4, 8) = 0.+0.*I, (5, 1) = 0.+0.*I, (5, 2) = 0.+0.*I, (5, 3) = 0.+0.*I, (5, 4) = 0.+0.*I, (5, 5) = 0.+0.*I, (5, 6) = 1.00000+0.*I, (5, 7) = 0.+0.*I, (5, 8) = 0.+0.*I, (6, 1) = 0.+0.*I, (6, 2) = 0.+0.*I, (6, 3) = 0.+0.*I, (6, 4) = 0.+0.*I, (6, 5) = 0.+0.*I, (6, 6) = 0.+0.*I, (6, 7) = 1.00000+0.*I, (6, 8) = 0.+0.*I, (7, 1) = 0.+0.*I, (7, 2) = 0.+0.*I, (7, 3) = 0.+0.*I, (7, 4) = 0.+0.*I, (7, 5) = 0.+0.*I, (7, 6) = 0.+0.*I, (7, 7) = 0.+0.*I, (7, 8) = 1.00000+0.*I, (8, 1) = -50.66671+0.*I, (8, 2) = 408.89275+0.*I, (8, 3) = -1487.04408+0.*I, (8, 4) = 2794.94522+0.*I, (8, 5) = -2674.98384+0.*I, (8, 6) = 863.56481+0.*I, (8, 7) = -168.12500+0.*I, (8, 8) = 17.33333+0.*I})

(1.4.6)

Digits := 100;
LinearAlgebra:-Eigenvalues( A42 );

Digits := 100

 

Eigenvalues: calling external function
Eigenvalues: initializing the output object
Eigenvalues: using software external library
Eigenvalues: CLAPACK sw_zgeevx_

 

Vector[column](%id = 18446745881317227806)

(1.4.7)

Digits := 250;
LinearAlgebra:-Eigenvalues( A42 );

Digits := 250

 

Eigenvalues: calling external function
Eigenvalues: initializing the output object
Eigenvalues: using software external library
Eigenvalues: CLAPACK sw_zgeevx_

 

Vector[column](%id = 18446745881356880102)

(1.4.8)

 

 

 

 

 

 

 

 

 

 

``


 

Download Problems_LinearAlgebra_Eigenvalues.mw

Please Wait...