eigval01.gms : Test eigenvalue utility

Description

Eigenvalue example.

Contributor: Erwin Kalvelagen, October 2008.


Small Model of Type : GAMS


Category : GAMS Test library


Main file : eigval01.gms

$title Test eigenvalue utility (EIGVAL01,SEQ=409)

$onText

Eigenvalue example.

Contributor: Erwin Kalvelagen, October 2008.


octave:1> a=[9 1 1; 1 9 1; 1 1 9]
a =

  9  1  1
  1  9  1
  1  1  9

octave:2> eig(a)
ans =

   8
   8
  11


$offText

set i /i1*i3/;
alias (i,j);

table a(i,j)
      i1   i2   i3
i1     9    1    1
i2     1    9    1
i3     1    1    9

;

parameter e(i) 'eigenvalues';

execute_unload 'a.gdx', i, a;
executeTool.checkErrorLevel 'linalg.eigenvalue i a e -gdxin=a.gdx -gdxout=b.gdx';
execute_load 'b.gdx', e;
abort$(abs(e('i1')-8)>1e-3 or abs(e('i2')-8)>1e-3 or abs(e('i3')-11)>1e-3) 'Wrong Eingenvalues', e;

option clear=e;
executeTool.checkErrorLevel 'linalg.eigenvalue i a e';
abort$(abs(e('i1')-8)>1e-3 or abs(e('i2')-8)>1e-3 or abs(e('i3')-11)>1e-3) 'Wrong Eingenvalues', e;
*
* only lower triangular part of A is used
*

table a2(i,j)
      i1   i2   i3
i1     9 
i2     1    9    
i3     1    1    9

;

execute_unload 'a.gdx', i, a2;
executeTool.checkErrorLevel 'linalg.eigenvalue i a2 e -gdxin=a.gdx -gdxout=b.gdx';
execute_load 'b.gdx', e;
abort$(abs(e('i1')-8)>1e-3 or abs(e('i2')-8)>1e-3 or abs(e('i3')-11)>1e-3) 'Wrong Eingenvalues', e;

option clear=e;
executeTool.checkErrorLevel 'linalg.eigenvalue i a2 e';
abort$(abs(e('i1')-8)>1e-3 or abs(e('i2')-8)>1e-3 or abs(e('i3')-11)>1e-3) 'Wrong Eingenvalues', e;

*
* only upper triangular part of A is used
*
Parameter a3(i,j); a3(i,j) = a2(j,i)

execute_unload 'a.gdx', i, a3;
executeTool.checkErrorLevel 'linalg.eigenvalue i a3 e -gdxin=a.gdx -gdxout=b.gdx';
execute_load 'b.gdx', e;
abort$(abs(e('i1')-8)>1e-3 or abs(e('i2')-8)>1e-3 or abs(e('i3')-11)>1e-3) 'Wrong Eingenvalues', e;

option clear=e;
executeTool.checkErrorLevel 'linalg.eigenvalue i a3 e';
abort$(abs(e('i1')-8)>1e-3 or abs(e('i2')-8)>1e-3 or abs(e('i3')-11)>1e-3) 'Wrong Eingenvalues', e;