# Exercise for ch2; Continuation of Example 2.5: Linear quadratic MPC# jbr, March 1, 2009importnumpyasnpfromscipyimportlinalgimportmatplotlib.pyplotaspltfrommiscimportellipseimportosH=np.array([[3,1],[1,2]])hr1=H[0,:]hr2=H[1,:]Hinv=(1/5)*np.array([[2,-1],[-1,3]])n1=1/np.sqrt(5)*np.array([2,-1])lam,V=linalg.eig(H)v1=V[:,0]v2=V[:,1]box=np.array([[-1,-1],[1,-1],[1,1],[-1,1],[-1,-1]])umin=-4.75av=-np.array([3,1])line=np.vstack((0*av,-umin/3*av))xc1=5/3xc2=3ac2=xc2/5*avbc2=5/2*(3*xc2/5-1)**2xec2,yec2,*_=ellipse(H,bc2,100,ac2)x3=4.5a3=x3/5*avb3=(np.array([-1,-1])-a3).T@H@(np.array([-1,-1])-a3)xe3,ye3,*_=ellipse(H,b3,100,a3)x4=2.25a4=x4/5*avb4=5/2*(3*x4/5-1)**2xe4,ye4,*_=ellipse(H,b4,100,a4)u0=np.array([-1,-(x4-1)/2])ifnotos.getenv('OMIT_PLOTS')=='true':plt.figure()plt.plot(box[:,0],box[:,1],'-',0,0,'o',-1,-1/3,'o',line[:,0],line[:,1],'-',ac2[0],ac2[1],'x',xec2,yec2,'-',a3[0],a3[1],'x',xe3,ye3,'-',-1,-1,'o',a4[0],a4[1],'x',xe4,ye4,'-',u0[0],u0[1],'o')plt.axis([umin,1.5,-3.5,1.5])plt.show(block=False)table1=np.column_stack((xec2,yec2,xe3,ye3,xe4,ye4))table2=np.hstack(([0,0],[-1,-1/3],ac2,a3,a4,[-1,-1],u0))# Save datawithopen('constlq.dat','w')asf:f.write('# table1\n')np.savetxt(f,table1,delimiter=' ',fmt='%.6f')f.write('\n\n')f.write('# table2\n')np.savetxt(f,[table2],delimiter=' ',fmt='%.6f')f.write('\n\n')f.write('# box\n')np.savetxt(f,box,delimiter=' ',fmt='%.6f')f.write('\n\n')f.write('# line\n')np.savetxt(f,line,delimiter=' ',fmt='%.6f')