#include #include #include "nr.h" #define ITMAX 200 void powell(double p[], double **xi, int n, double ftol, int *iter, double *fret, double (*func)(double [])) { int i,ibig,j; double del,fp,fptt,t,*pt,*ptt,*xit; pt=vector(n); ptt=vector(n); xit=vector(n); *fret=(*func)(p); // func:functionのこと for (j=0;j del) { del=fabs(fptt-(*fret)); ibig=i; } } if (2.0*fabs(fp-(*fret)) <= ftol*(fabs(fp)+fabs(*fret))) { free_vector(xit); free_vector(ptt); free_vector(pt); return; } if (*iter == ITMAX) printf("powell exceeding maximum iterations."); for (j=0;j