1、xi=(double *)malloc(n*sizeof(double);h=h0;n;*(x0+i)=x0i;f1=objf(x0);*(x1+i)=*(x0+i)+h*si;f2=objf(x1);if(f2=f1)h=-h0; for(i=0; *(x2+i)=*(x0+i); f3=f1; *(x0+i)=*(x1+i); *(x1+i)=*(x2+i); f1=f2; f2=f3; for(;) h=2*h; for(i=0; *(x2+i)=*(x1+i)+h*si; f3=objf(x2); if(f2f3) break; else for(i=0; *(x0+i)=*(x1+i
2、); *(x1+i)=*(x2+i); f1=f2; f2=f3; if(hf2) for(i=0; bi=*(x0+i); *(x0+i)=*(x1+i); f1=f2; *(x1+i)=ai+0.382*(bi-ai); f2=objf(x1); else for(i=0; ai=*(x1+i); *(x1+i)=*(x0+i); f2=f1; *(x0+i)=ai+0.618*(bi-ai); f1=objf(x0);q=0; q=q+(bi-ai)*(bi-ai);w=sqrt(q);while(weps); xxi=0.5*(ai+bi);ff=objf(xx);free(xi);d
3、ouble oneoptim(double x0,double s,double h0,double epsg,int n,double x)double *a,*b,ff;a=(double *)malloc(n*sizeof(double);b=(double *)malloc(n*sizeof(double);jtf(x0,h0,s,n,a,b);ff=gold(a,b,epsg,n,x);free(a);free(b);return (ff);double powell(double p,double h0,double eps,double epsg,int n,double x)i
4、nt i,j,m;double *xx4,*ss,*s;double f,f0,f1,f2,f3,fx,dlt,df,sdx,q,d;ss=(double *)malloc(n*(n+1)*sizeof(double);s=(double *)malloc(n*sizeof(double);for(j=0;jdlt) dlt=df; m=j; sdx=0; sdx=sdx+fabs(xi-(*(xx1+i); if(sdxeps) free(ss); free(s); for(i=0; free(xxi); return(f); *(xx2+i)=xi; f2=f; *(xx3+i)=2*(*
5、(xx2+i)-(*(xx1+i); xi=*(xx3+i); fx=objf(x); f3=fx; q=(f1-2*f2+f3)*(f1-f2-dlt)*(f1-f2-dlt); d=0.5*dlt*(f1-f3)*(f1-f3); if(f3f1)|(qd) if(f2=f3) for(i=0; *(xx0+i)=*(xx2+i); else *(xx0+i)=*(xx3+i); *(ss+(i+1)*(n+1)=xi-(*(xx1+i); *(s+i)=*(ss+(i+1)*(n+1); f=oneoptim(xx0,s,h0,epsg,n,x); *(xx0+i)=xi; for(j=m+1; *(ss+i*(n+1)+j-1)=*(ss+i*(n+1)+j); void main()double p=1,2;double ff,x2;ff=powell(p,0.3,0.001,0.0001,2,x);printf(x0=%f,x1=%f,ff=%fn,x0,x1,ff);getchar();
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2