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;