#######These are all the chapter 1 commands in order of appearance.#Calculate the upper and lower valuesrestart:with(LinearAlgebra):A:=Matrix([[2,-5],[-3,1],[4,-3]]);rows:=3 : cols:=2:vu:=min(seq(max(seq(A[i,j],i=1..rows)),j=1..cols));vl:=max(seq(min(seq(A[i,j],j=1..cols)),i=1..rows));print("the upper value is",vu);print("the lower value is",vl);#Solve a system of equationsrestart: eqs:={y1+2*y2+3*y3-v=0, 3*y1+y2+2*y3-v=0, 2*y1+3*y2+y3-v=0, y1+y2+y3-1=0};solve(eqs,[y1,y2,y3,v]);#Calculate value using invertible formulasrestart:with(LinearAlgebra):A:=Matrix([[0 ,1 ,-2 ],[-1 ,-2 ,3],[2 ,-3 ,-4 ]]);Determinant(A);A:=MatrixAdd( ConstantMatrix(-1,3,3), A );Determinant(A);B:=A^(-1);J:=Vector[row]([1 ,1 ,1 ]);J.B.Transpose(J);v:=1/(J.B.Transpose(J));X:=v*(J.B);Y:=v*(B.Transpose(J));#Calculate value using method 1 for player Irestart:with(simplex):cnsts:={2*p[1]+6*p[2]+4*p[3] >=1, 5*p[1]+p[2]+6*p[3] >=1,4*p[1]+3*p[2]+p[3] >=1};obj:=p[1]+p[2]+p[3];minimize(obj,cnsts,NONNEGATIVE);#Calculate value and saddle for plyaers I, IIrestart:with(Optimization):cnsts:={2*p[1]+6*p[2]+4*p[3] >=1, 5*p[1]+p[2]+6*p[3] >=1, 4*p[1]+3*p[2]+p[3] >=1};obj:=p[1]+p[2]+p[3];Minimize(obj,cnsts,assume=nonnegative);with(simplex):cnsts:={2*q[1]+5*q[2]+4*q[3]<=1, 6*q[1]+q[2]+3*q[3]<=1, 4*q[1]+6*q[2]+q[3]<=1};obj:=q[1]+q[2]+q[3];maximize(obj,cnsts,NONNEGATIVE);#Automatically calc constraints, v, saddle for Irestart:with(LinearAlgebra):R:=Matrix([[0.24,0.6,0.6],[0.9,0.36,0.70],[0.9,0.8,0]]);with(Optimization): P:=Vector(3,symbol=p);PC:=Transpose(P).R;Xcnst:={seq(PC[i]>=1,i=1..3)};Xobj:=add(p[i],i=1..3);Z:=Minimize(Xobj,Xcnst,assume=nonnegative); evalf(1/Z[1]);v:=evalf(1/Z[1]); for i from 1 to 3 do evalf(v*Z[2,i]) end do;#Calc restart:with(LinearAlgebra):R:=Matrix([[0.24,0.6,0.6],[0.9,0.36,0.70],[0.9,0.8,0]]);with(simplex): P:=Vector(3,symbol=p);PC:=Transpose(P).R;Xcnst:={seq(PC[i]>=1,i=1..3)};Xobj:=add(p[i],i=1..3);Z:=minimize(Xobj,Xcnst,NONNEGATIVE);v:=evalf(1/Z[1]); for i from 1 to 3 do evalf(v*Z[2,i]) end do;#Calc value and saddle with LPrestart:with(LinearAlgebra):with(simplex):A:=Matrix([[0,-1,1],[1,0,-1],[-1,1,0]]);X:=Vector(3,symbol= x);B:=Transpose(X).A;cnstx:={seq(B[i] >=v,i=1..3),add(x[i],i=1..3)=1};maximize(v,cnstx,NONNEGATIVE);Y:=<y[1],y[2],y[3]>;B:=A.Y;cnsty:={seq(B[j]<=w,j=1..3),add(y[j],j=1..3)=1};minimize(w,cnsty,NONNEGATIVE);restart:with(LinearAlgebra):A:=Matrix([[4,0,2,1],[0,4,1,2],[1,-1,3,0],[-1,1,0,3],[-2,-2,2,2]]);X:=Vector(5,symbol=x);B:=Transpose(X).A;cnst:={seq(B[i]>=v,i=1..4),add(x[i],i=1..5)=1};with(simplex):maximize(v,cnst,NONNEGATIVE,value);restart:with(LinearAlgebra):A:=Matrix([[4,0,2,1],[0,4,1,2],[1,-1,3,0],[-1,1,0,3],[-2,-2,2,2]]);Y:=Vector(4,symbol=y);B:=A.Y;cnst:={seq(B[i]<=v,i=1..5),add(y[i],i=1..4)=1};with(simplex):minimize(v,cnst,NONNEGATIVE,value);#Procedure to calc value and saddle for Method 2.restart:with(LinearAlgebra):A:=Matrix([[12,8,-5],[4,4,6],[5,5,5]]);value:=proc(A,rows,cols) local X,Y,B,C,cnstx,cnsty,vI,vII,vu,vl; X:=Vector(rows,symbol=x): Y:=Vector(cols,symbol=y): B:=Transpose(X).A; C:=A.Y; cnsty:={seq(C[j]<=vII,j=1..rows),add(y[j],j=1..cols)=1}: cnstx:={seq(B[i]>=vI,i=1..cols),add(x[i],i=1..rows)=1}: with(simplex): vu:=maximize(vI,cnstx,NONNEGATIVE); vl:=minimize(vII,cnsty,NONNEGATIVE); print(vu,vl); end:value(A,3,3);#Payoff function for discrete duelrestart:p1:=x->piecewise(x=0,.2,x=.2,.4,x=.4,.4,x=.6,.4,x=.8,1);p2:=x->piecewise(x=0,0.6,x=.2,.8,x=.4,.8,x=.6,.8,x=.8,1);u1:=(x,y)-> piecewise(x<y,1*p1(x)+(-1)*(1-p1(x))*p2(y)+(0)*(1-p1(x))*(1-p2(y)), x>y,(-1)*p2(y)+(1)*(1-p2(y))*p2(x)+0*(1-p2(y))*(1-p1(x)), x=y,0*p1(x)*p2(x)+(1)*p1(x)*(1-p2(x))+(-1)*(1-p1(x))*p2(x) +0*(1-p1(x))*(1-p2(x)));with(LinearAlgebra):A:=Matrix([[u1(0,0),u1(0,.4),u1(0,.8)], [u1(.4,0),u1(.4,.4),u1(.4,.8)], [u1(.8,0),u1(.8,.4),u1(.8,.8)]]);restart:with (LinearAlgebra):value:=proc(A,rows,cols) local X,Y,B,C,cnstx,cnsty,vI,vII,vu,vl; X:=Vector(rows,symbol=x): Y:=Vector(cols,symbol=y): B:=Transpose(X).A; C:=A.Y; cnsty:={seq(C[j]<=vII,j=1..rows),add(y[j],j=1..cols)=1}: cnstx:={seq(B[i]>=vI,i=1..cols),add(x[i],i=1..rows)=1}: with(simplex): vu:=maximize(vI,cnstx,NONNEGATIVE); vl:=minimize(vII,cnsty,NONNEGATIVE); print(vu,vl); end:City:=Matrix([[12,-9,14],[-8,7,12],[11,-10,10]]);value(City,3,3);#Solution of econ growth model.restart:with (LinearAlgebra):value:=proc(A,rows,cols) local X,Y,B,C,cnstx,cnsty,vI,vII,vu,vl; X:=Vector(rows,symbol=x): Y:=Vector(cols,symbol=y): B:=Transpose(X).A; C:=A.Y; cnsty:={seq(C[j]<=vII,j=1..rows),add(y[j],j=1..cols)=1}: cnstx:={seq(B[i]>=vI,i=1..cols),add(x[i],i=1..rows)=1}: with(simplex): vu:=maximize(vI,cnstx,NONNEGATIVE); vl:=minimize(vII,cnsty,NONNEGATIVE);print(vu,vl); end:A:=a->Matrix([[-2,2*a-1,a-3],[3*a-2,a-3,2*a-1]]);B1:=a->A(a)+ConstantMatrix(5,2,3);value(B1(1.335),2,3);###This ends Matrix Games commands