Skip to content
Snippets Groups Projects
Commit d0d0b6ed authored by Stéphane Adjemian's avatar Stéphane Adjemian
Browse files

Use new numgrad routines.

options_.gradient method = {12,22} two points formula.
options_.gradient method = {13,23} three points formula.
options_.gradient method = {15,25} four points formula.

Still need to decide what to do with (local) option zgrad.
parent 4ce4242d
Branches
Tags
No related merge requests found
...@@ -78,6 +78,14 @@ if NumGrad ...@@ -78,6 +78,14 @@ if NumGrad
[g,badg] = numgrad3(fcn, f0, x0, epsilon, varargin{:}); [g,badg] = numgrad3(fcn, f0, x0, epsilon, varargin{:});
case 5 case 5
[g,badg] = numgrad5(fcn, f0, x0, epsilon, varargin{:}); [g,badg] = numgrad5(fcn, f0, x0, epsilon, varargin{:});
case {12, 22}
[g,badg] = numgrad2_(fcn, f0, x0, epsilon, [], varargin{:});
case {13, 23}
[g,badg] = numgrad3_(fcn, f0, x0, epsilon, [], varargin{:});
case {15, 25}
[g,badg] = numgrad5_(fcn, f0, x0, epsilon, [], varargin{:});
otherwise
error('csminwel1: Unknown method for gradient evaluation!')
end end
elseif ischar(grad) elseif ischar(grad)
[g,badg] = feval(grad,x0,varargin{:}); [g,badg] = feval(grad,x0,varargin{:});
...@@ -130,6 +138,20 @@ while ~done ...@@ -130,6 +138,20 @@ while ~done
[g1 badg1] = numgrad3(fcn, f1, x1, epsilon, varargin{:}); [g1 badg1] = numgrad3(fcn, f1, x1, epsilon, varargin{:});
case 5 case 5
[g1,badg1] = numgrad5(fcn, f1, x1, epsilon, varargin{:}); [g1,badg1] = numgrad5(fcn, f1, x1, epsilon, varargin{:});
case 12
[g1,badg1] = numgrad2_(fcn, f1, x1, epsilon, [], varargin{:});
case 13
[g1,badg1] = numgrad3_(fcn, f1, x1, epsilon, [], varargin{:});
case 15
[g1,badg1] = numgrad5_(fcn, f1, x1, epsilon, [], varargin{:});
case 22
[g1,badg1] = numgrad2_(fcn, f1, x1, epsilon, abs(diag(H)), varargin{:});
case 23
[g1,badg1] = numgrad3_(fcn, f1, x1, epsilon, abs(diag(H)), varargin{:});
case 25
[g1,badg1] = numgrad5_(fcn, f1, x1, epsilon, abs(diag(H)), varargin{:});
otherwise
error('csminwel1: Unknown method for gradient evaluation!')
end end
elseif ischar(grad), elseif ischar(grad),
[g1 badg1] = feval(grad,x1,varargin{:}); [g1 badg1] = feval(grad,x1,varargin{:});
...@@ -167,6 +189,20 @@ while ~done ...@@ -167,6 +189,20 @@ while ~done
[g2 badg2] = numgrad3(fcn, f2, x2, epsilon, varargin{:}); [g2 badg2] = numgrad3(fcn, f2, x2, epsilon, varargin{:});
case 5 case 5
[g2,badg2] = numgrad5(fcn, f2, x2, epsilon, varargin{:}); [g2,badg2] = numgrad5(fcn, f2, x2, epsilon, varargin{:});
case 12
[g2,badg2] = numgrad2_(fcn, f2, x2, epsilon, [], varargin{:});
case 13
[g2,badg2] = numgrad3_(fcn, f2, x2, epsilon, [], varargin{:});
case 15
[g2,badg2] = numgrad5_(fcn, f2, x2, epsilon, [], varargin{:});
case 22
[g2,badg2] = numgrad2_(fcn, f2, x2, epsilon, abs(diag(H)), varargin{:});
case 23
[g2,badg2] = numgrad3_(fcn, f2, x2, epsilon, abs(diag(H)), varargin{:});
case 25
[g2,badg2] = numgrad5_(fcn, f2, x2, epsilon, abs(diag(H)), varargin{:});
otherwise
error('csminwel1: Unknown method for gradient evaluation!')
end end
elseif ischar(grad), elseif ischar(grad),
[g2 badg2] = feval(grad,x2,varargin{:}); [g2 badg2] = feval(grad,x2,varargin{:});
...@@ -205,6 +241,20 @@ while ~done ...@@ -205,6 +241,20 @@ while ~done
[g3 badg3] = numgrad3(fcn, f3, x3, epsilon, varargin{:}); [g3 badg3] = numgrad3(fcn, f3, x3, epsilon, varargin{:});
case 5 case 5
[g3,badg3] = numgrad5(fcn, f3, x3, epsilon, varargin{:}); [g3,badg3] = numgrad5(fcn, f3, x3, epsilon, varargin{:});
case 12
[g3,badg3] = numgrad2_(fcn, f3, x3, epsilon, [], varargin{:});
case 13
[g3,badg3] = numgrad3_(fcn, f3, x3, epsilon, [], varargin{:});
case 15
[g3,badg3] = numgrad5_(fcn, f3, x3, epsilon, [], varargin{:});
case 22
[g3,badg3] = numgrad2_(fcn, f3, x3, epsilon, abs(diag(H)), varargin{:});
case 23
[g3,badg3] = numgrad3_(fcn, f3, x3, epsilon, abs(diag(H)), varargin{:});
case 25
[g3,badg3] = numgrad5_(fcn, f3, x3, epsilon, abs(diag(H)), varargin{:});
otherwise
error('csminwel1: Unknown method for gradient evaluation!')
end end
elseif ischar(grad), elseif ischar(grad),
[g3 badg3] = feval(grad,x3,varargin{:}); [g3 badg3] = feval(grad,x3,varargin{:});
...@@ -272,6 +322,20 @@ while ~done ...@@ -272,6 +322,20 @@ while ~done
[gh,badgh] = numgrad3(fcn, fh, xh, epsilon, varargin{:}); [gh,badgh] = numgrad3(fcn, fh, xh, epsilon, varargin{:});
case 5 case 5
[gh,badgh] = numgrad5(fcn, fh, xh, epsilon, varargin{:}); [gh,badgh] = numgrad5(fcn, fh, xh, epsilon, varargin{:});
case 12
[gh,badgh] = numgrad2_(fcn, fh, xh, epsilon, [], varargin{:});
case 13
[gh,badgh] = numgrad3_(fcn, fh, xh, epsilon, [], varargin{:});
case 15
[gh,badgh] = numgrad5_(fcn, fh, xh, epsilon, [], varargin{:});
case 22
[gh,badgh] = numgrad2_(fcn, fh, xh, epsilon, abs(diag(H)), varargin{:});
case 23
[gh,badgh] = numgrad3_(fcn, fh, xh, epsilon, abs(diag(H)), varargin{:});
case 25
[gh,badgh] = numgrad5_(fcn, fh, xh, epsilon, abs(diag(H)), varargin{:});
otherwise
error('csminwel1: Unknown method for gradient evaluation!')
end end
elseif ischar(grad), elseif ischar(grad),
[gh badgh] = feval(grad, xh,varargin{:}); [gh badgh] = feval(grad, xh,varargin{:});
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment