ITE / code / shared / embedded / E4 / fstofd.m

function [a] = fstofd(xpls,index,fcn,fpls,sx,rnoise,icase,P1,P2,P3,P4,P5,P6,P7,P8)
% FSTOFD   - Computes the numerical gradient of FCN by forward differences.
%    a = fstofd(xpls, index, fcn, fpls, sx, rnoise, icase, P1,P2,P3,P4,P5,P6,P7,P8)
% This function computes:
% - The gradient of FCN if there is no analytical gradient (icase = 1).
% - The hessian of FCN if there is no analytical hessian but there is
%   an analytical gradient (icase = 3).
% 11/3/97
% Copyright (c) Jaime Terceiro, 1997
% This program is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 2, or (at your option)
% any later version.
% This program is distributed in the hope that it will be useful, but
% WITHOUT ANY WARRANTY; without even the implied warranty of
% General Public License for more details. 
% You should have received a copy of the GNU General Public License
% along with this file.  If not, write to the Free Software Foundation,
% 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

% Internal use only.

parms = getparms(nargin-7);
n     = size(xpls(index),1);
m     = 1; if icase == 3; m = n; end
a     = zeros(n,m);

stepsz = sqrt(rnoise).*max(abs(xpls(index,1)), 1.0./sx);
for j=1:n
   xtmpj    = xpls(index(j),1);
   xpls(index(j),1) = xtmpj + stepsz(j);   
   fhat     = eval([fcn '(xpls' parms ')']);
   xpls(index(j),1) = xtmpj;
   a(j,1:m) = (fhat(:) - fpls(:))'/stepsz(j);

if (icase == 3) & (n ~= 1), a = (a + a')/2; end
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.