//:Definestheentrypointfortheconsoleapplication.////用坐标轮换法求得函数的最优解//#include""#include""#include""#include""#(doublex[],inta){ doublef1; f1=pow(pow(x[0],2)+x[1]-11,2)+pow(x[0]+pow(x[1],2)-7,2); returnf1;}intmain(intargc,char*argv[]){ ints1[2],s2[2],i,j; doublex[100][2],xl[2],h1,t,m,f1,f2,fl,p,f3,f4; h1=,t=,p=2; s1[0]=1,s1[1]=0; s2[0]=0,s2[1]=1; x[0][0]=1.,x[0][1]=1.;f1=funtion(x[0],2); x[1][0]=x[0][0]+h1*s1[0]; x[1][1]=x[0][1]+h1*s1[1]; f2=funtion(x[1],2);for(j=1;;j++){if(f1>f2) { for(i=2;;i++) { h1=p*h1; f3=funtion(x[i-1],2); x[i][0]=x[i-1][0]+h1*s1[0]; x[i][1]=x[i-1][1]+h1*s1[1]; f4=funtion(x[i],2); if(f3<f4)break; } x[0][0]=x[i-2][0]; x[0][1]=x[i-2][1]; x[1][0]=x[i-3][0]; x[1][1]=x[i-3][1]; }else { h1=-h1; for(i=1;;i++) {f3=funtion(x[i-1],2);x[i][0]=x[i-1][0]+h1*s1[0]; x[i][1]=x[i-1][1]+h1*s1[1];f4=funtion(x[i],2); h1=p*h1; if(f3<f4)break; }x[0][0]=x[i-1][0]; x[0][1]=x[i-1][1];x[1][0]=x[i-2][0]; x[1][1]=x[i-2][1]; } t=-t; f1=funtion(x[0],2); x[1][0]=x[0][0]+t*s2[0]; x[1][1]=x[0][1]+t*s2[1]; f2=funtion(x[1],2);if(f1>f2) { for(i=2;;i++) { t=p*t; f3=funtion(x[i-1],2); x[i][0]=x[i-1][0]+t*s2[0]; x[i][1]=x[i-1][1]+t*s2[1]; f4=funtion(x[i+1],2); if(f3<f4)break; }x[0][0]=x[i-1][0]; x[0][1]=x[i-1][1];x[1][0]=x[i-2][0]; x[1][1]=x[i-2][1]; } else
坐标轮换法c程序设计 来自淘豆网www.taodocs.com转载请标明出处.