《梯度投影法 MATLAB程序可执行》由会员分享,可在线阅读,更多相关《梯度投影法 MATLAB程序可执行(10页珍藏版)》请在人人文库网上搜索。
1、function x,minf=minRosen(f,A,b,x0,var,eps)%目标函数:f;%约束矩阵:A;%约束右端力量:b;%初始可行点:x0;%自变量向量:var;%精度:eps;%目标函数取最小值时的自变量值:x;%目标函数的最小值:minf;format long;if nargin = 5eps=1.0e-6;endsyms l;x00=transpose(x0);n=length(var);sz=size(A);m=sz(1);gf=jacobian(f,var);bConti=1;while bContik=0;s=0;A1=A;A2=A;b1=b;b2=b;for i。
2、=1:mdfun=A(i,:)*x00-b(i);if abs(dfun)0A1=A1(1:k,:);b1=b1(1:k,:);endif s0A2=A2(1:s,:);b2=b2(1:s,:);endwhile 1P=eye(n,n);if k0tM=transpose(A1);P=P-tM*inv(A1*tM)*A1;endgv=Funval(gf,var,x0);gv=transpose(gv); d=-P*gv ;if d=0if k=0x=x0;bConti=0;break;elsew=inv(A1*tM)*A1*gv;if w=0 x=x0;bConti=0;break;elseu。
3、,index=min(w);sA1=size(A1);if sA1(1)