📄 example3_11.m
字号:
function [x,y,ier]=minqdef(c,G,A,b,eq,prt,xx);
R=chol(G);
[m,n]=size(A);
A0=A/R;
GG=A0*A0';
c0=R'\c;
cc=-b-A0*c0;
yo=inf+zeros(m,1);
yu=zeros(m,1);yu(eq)=-yo(eq);
[y,fct,ier]=minq(0,cc,GG,yu,yo,prt);
x=R\(A0'*y-c0);
if ier==99, return; end;
% check for accuracy
res=A*x-b;ressmall=nnz(A)*eps*(abs(A)*abs(x)+abs(b));
res(~eq)=min(res(~eq),0);
if prt,
disp('residual (first row) small if comparable to second row')
disp([res,ressmall]')
end;
if min(abs(res)<=ressmall),
% accuracy satisfactory
ier=0;
return;
end;
% one step of iterative refinement
if prt,
disp('one step of iterative refinement')
end;
[dy,fct,ier]=minq(0,-res,GG,yu-y,yo-y,prt);
x=x+R\(A0'*dy);
y=y+dy;
% check for accuracy
res=A*x-b;ressmall=nnz(A)*eps*(abs(A)*abs(x)+abs(b));
res(~eq)=min(res(~eq),0);
if min(abs(res)<=sqrt(nnz(A))*ressmall),
% accuracy satisfactory
ier=0;
else
% feasible set probably empty
ier=1;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -