errorComputation2_grad

PURPOSE ^

SYNOPSIS ^

function [out] = errorComputation2_grad(x,Prob)

DESCRIPTION ^

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [out] = errorComputation2_grad(x,Prob)
0002 
0003 model = Prob.user.model;
0004 f0 = errorComputation2(x,Prob);
0005 if length(x) == length(model.lb)
0006     method = 1;
0007 else
0008     method = 2; % in terms of alpha
0009 end
0010 
0011 out = zeros(size(x));
0012 
0013 if isfield(Prob.user, 'diff_interval')
0014     diff = Prob.user.diff_interval;
0015 else
0016     diff = 1e-5;
0017 end
0018 if isfield(Prob.user, 'useparfor')
0019     useparfor = Prob.user.useparfor;
0020 else
0021     useparfor = false;
0022 end
0023 
0024 
0025 if method == 2
0026     if useparfor
0027         parfor i = 1:length(x)
0028             xnew = x;
0029             tdiff = diff/norm(model.N(:,i));
0030             xnew(i) = xnew(i) + tdiff;
0031             f1 = errorComputation2(xnew, Prob);
0032             out(i) = (f1-f0)/tdiff;
0033         end
0034     else
0035         for i = 1:length(x)
0036             xnew = x;
0037             tdiff = diff/norm(model.N(:,i));
0038             xnew(i) = xnew(i) + tdiff;
0039             f1 = errorComputation2(xnew, Prob);
0040             out(i) = (f1-f0)/tdiff;
0041         end
0042     end
0043 elseif method == 1
0044     idxzero = false(size(x));
0045     for i = 1:length(model.isotopomer)
0046         if isempty(model.isotopomer{i})
0047             idxzero(i) = true;
0048         end
0049     end
0050 
0051     if length(x) ~= length(model.lb)
0052         display('shoot');
0053         pause;
0054     end
0055 
0056     out = NaN*ones(length(x),1);
0057     out(idxzero) = 0;
0058 else
0059     display('whoops');
0060     return;
0061 end
0062 
0063 return;

Generated on Thu 21-Jun-2012 15:39:23 by m2html © 2003