$ontext Invert the Pei test matrix Erwin Kalvelagen, july 2008 Command line arguments: --n=integer order of the matrix --alpha=real scalar defining the Pei matrix --method=1 invert using equations A AINV = I --method=2 invert using equations A AINV = I using advanced basis --method=3 invert using external solver Reference: Erwin Kalvelagen SOLVING SYSTEMS OF LINEAR EQUATIONS WITH GAMS http://www.amsterdamoptimization.com/pdf/lineq.pdf ML Pei, A test matrix for inversion procedures, Communications of the ACM, Volume 5, 1962, page 508. $offtext * * defaults * $if not set n $set n 100 $if not set method $set method 1 $if not set alpha $set alpha 1 scalar alpha /%alpha%/; set i /i1*i%n%/; alias (i,j,k); parameter a(i,j); a(i,j)=1; a(i,i)=1+alpha; parameter ident(i,j); ident(i,i)=1; variables ainv(i,j) dummy ; equations e(i,j) edummy ; edummy.. dummy =e= 0; e(i,j).. sum(k, a(i,k)*ainv(k,j)) =e= ident(i,j); model m /all/; option iterlim=1000000; $if "%method%"==1 solve m minimizing dummy using lp; $ifthen "%method%"==2 edummy.m=1; e.m(i,j)=1; dummy.m=0; ainv.m(i,j)=0; solve m minimizing dummy using lp; $endif $ifthen "%method%"==3 execute_unload 'a.gdx',i,a; execute '=invert2.exe a.gdx i a b.gdx pinva'; parameter pinva(i,j); execute_load 'b.gdx',pinva; $endif