您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 其它文档 > 坐标轮换法c程序设计
//1.cpp:Definestheentrypointfortheconsoleapplication.////用坐标轮换法求得函数的最优解//#includestdafx.h#includemath.h#includeconio.h#includestdlib.h#definee0.1doublefuntion(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=0.005,t=0.005,p=2;s1[0]=1,s1[1]=0;s2[0]=0,s2[1]=1;x[0][0]=1.000000,x[0][1]=1.000000;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(f1f2){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(f3f4)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(f3f4)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(f1f2){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(f3f4)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{t=-t;for(i=1;;i++){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],2);t=p*t;if(f3f4)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];}m=pow(pow((x[0][0]-x[1][0]),2)+pow((x[0][1]-x[1][1]),2),0.5);if(me){xl[0]=x[0][0];xl[1]=x[0][1];fl=funtion(xl,2);printf(最优解为:xl=(%f,%f)\n最优解的函数值为:fl=%f\n,xl[0],xl[1],fl);exit(0);}else{h1=0.005,t=0.005,p=0.95*p;x[0][0]=1.000000,x[0][1]=1.000000;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);}}return1;}
本文标题:坐标轮换法c程序设计
链接地址:https://www.777doc.com/doc-7153242 .html