ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/NLModel0.cpp
(Generate patch)

Comparing trunk/OOPSE/libmdtools/NLModel0.cpp (file contents):
Revision 1000 by tim, Fri Jan 30 21:47:22 2004 UTC vs.
Revision 1010 by tim, Tue Feb 3 20:43:08 2004 UTC

# Line 1 | Line 1
1   #include "NLModel.hpp"
2 + #include <math.h>
3  
4   /**
5   * calculate gradient using backward finite difference
# Line 21 | Line 22 | vector<double> NLModel0::BackwardGrad(const vector<dou
22      //tempX[i] = x[i] + hi;
23      tempX[i] -= hi;
24  
25 <    fminus = (*objfunc)(tempX);
25 >    fminus = calcF(tempX);
26  
27      partialGrad[i] =  (fx - fminus) / hi;
28  
# Line 36 | Line 37 | vector<double> NLModel0::BackwardGrad(const vector<dou
37        tempX[i] -= hi;
38      }
39  
40 <    fminus = (*objfunc)(tempX);
40 >    fminus = calcF(tempX);
41  
42      if(procMappingArray[i] == myRank){
43        partialGrad[i] =  (fx - fminus) / hi;
# Line 72 | Line 73 | vector<double> NLModel0::ForwardGrad(const vector<doub
73      //tempX[i] = x[i] + hi;
74      tempX[i] += hi;
75  
76 <    fplus = (*objfunc)(tempX);
76 >    fplus = calcF(tempX);
77  
78      partialGrad[i] =  (fplus - fx) / hi;
79  
# Line 88 | Line 89 | vector<double> NLModel0::ForwardGrad(const vector<doub
89        tempX[i] += hi;
90      }
91  
92 <    fminus = (*objfunc)(tempX);
92 >    fminus = calcF(tempX);
93  
94      if(procMappingArray[i] == myRank){
95        partialGrad[i] =  (fx - fminus) / hi;
# Line 124 | Line 125 | vector<double> NLModel0::CentralGrad(const vector<doub
125      //tempX[i] = x[i] + hi
126      tempX[i] += hi;
127      
128 <    fplus = (*objfunc)(tempX);
128 >    fplus = calcF(tempX);
129  
130      //tempX[i] = x[i] -hi
131      tempX[i] -= 2*hi;
132 <    fminus = (*objfunc)(tempX);
132 >    fminus = calcF(tempX);
133      
134      partialGrad[i] =  (fplus + fminus) / (2*hi);
135  
# Line 144 | Line 145 | vector<double> NLModel0::CentralGrad(const vector<doub
145        tempX[i] += hi;
146      }
147  
148 <    fplus = (*objfunc)(tempX);
148 >    fplus = calcF(tempX);
149  
150      if(procMappingArray[i] == myRank){
151        partialGrad[i] =  (fx - fminus) / hi;
# Line 178 | Line 179 | SymMatrix NLModel0::FiniteHessian(vector<double>& x, d
179    vector<double> tempX;
180    vector<double> fi(ndim);
181    vector<double> hi;
182 <  double fij;
182 >  double fii, fij;
183    
184    tempX = x;
185  
# Line 193 | Line 194 | SymMatrix NLModel0::FiniteHessian(vector<double>& x, d
194  
195      fi[i] = calcF(tempX);
196      
197 <    tempX[i] -= hi;
197 >    tempX[i] -=  hi[i];
198  
199   #else
200  
# Line 221 | Line 222 | SymMatrix NLModel0::FiniteHessian(vector<double>& x, d
222  
223      fii = calcF(tempX);
224      
225 <    H(i,j) = ((fx - fi[i]) + (fii - fi[i])) / (hi[i]*hi[i]);
225 >    H(i, i) = ((fx - fi[i]) + (fii - fi[i])) / (hi[i]*hi[i]);
226  
227      tempX[i] -= hi[i];
228      
# Line 231 | Line 232 | SymMatrix NLModel0::FiniteHessian(vector<double>& x, d
232  
233        fij = calcF(tempX);
234  
235 <      H(i,j) = ((f - fi[i]) + (fij - fi[j])) / (hi[i]*hi[j]);
235 >      H(i,j) = ((fx - fi[i]) + (fij - fi[j])) / (hi[i]*hi[j]);
236  
237        tempX[j] -= hi[j];
238      }
# Line 248 | Line 249 | SymMatrix NLModel0::FiniteHessian(vector<double>& x, d
249      
250      fii = calcF(tempX);
251      
252 <    H(i,j) = ((fx - fi[i]) + (fii - fi[i])) / (hi[i]*hi[i]);
252 >    H(i,i) = ((fx - fi[i]) + (fii - fi[i])) / (hi[i]*hi[i]);
253  
254      if(procMappingArray[i] == myRank){    
255        tempX[i] -= hi[i];
# Line 261 | Line 262 | SymMatrix NLModel0::FiniteHessian(vector<double>& x, d
262        }
263  
264        fij = calcF(tempX);
265 <      H(i,j) = ((f - fi[i]) + (fij - fi[j])) / (hi[i]*hi[j]);
265 >      H(i,j) = ((fx - fi[i]) + (fij - fi[j])) / (hi[i]*hi[j]);
266  
267        if(procMappingArray[j] == myRank){    
268              tempX[j] -= hi[j];

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines