31 lines
1.2 KiB
Matlab
Executable File
31 lines
1.2 KiB
Matlab
Executable File
%%*****************************************************************
|
|
%% HKMcorr: corrector step for the HKM direction.
|
|
%%
|
|
%% SDPT3: version 3.0
|
|
%% Copyright (c) 1997 by
|
|
%% K.C. Toh, M.J. Todd, R.H. Tutuncu
|
|
%% Last modified: 2 Feb 01
|
|
%%*****************************************************************
|
|
|
|
function [dX,dy,dZ] = HKMcorr(blk,At,par,rp,Rd,sigmu,hRd,...
|
|
dX,dZ,schur,L,UU,VV,E,SMWmat,X,Z);
|
|
|
|
global matlabversion
|
|
global matfct_options solve_ok;
|
|
%%
|
|
[rhs,EinvRc] = HKMrhsfun(blk,At,par,X,Z,rp,Rd,sigmu,hRd,dX,dZ);
|
|
rhs = [rhs; zeros(length(rp)+size(UU,2)-length(rhs),1)];
|
|
if strcmp(matfct_options,'chol')
|
|
[xx,solve_ok] = schursysolve(schur,schur,UU,VV,E,rhs,matfct_options,SMWmat);
|
|
elseif strcmp(matfct_options,'spchol')
|
|
[xx,solve_ok] = schursysolve(schur,L,UU,VV,E,rhs,matfct_options,SMWmat);
|
|
elseif strcmp(matfct_options,'MA47')
|
|
xx = mexMA47slv(length(rhs),L.a,L.iw,rhs);
|
|
elseif strcmp(matfct_options,'splu')
|
|
xx(L.perm,1) = L.q*( L.u \ (L.l \ (L.p*rhs(L.perm))));
|
|
elseif strcmp(matfct_options,'lu')
|
|
xx = L.u \ (L.l \ (L.p*rhs));
|
|
end
|
|
[dX,dy,dZ] = HKMdirfun(blk,At,par,Rd,EinvRc,X,xx);
|
|
%%*****************************************************************
|