《惩罚函数法C语言相关程序.doc》由会员分享,可在线阅读,更多相关《惩罚函数法C语言相关程序.doc(3页珍藏版)》请在三一文库上搜索。
1、惩罚函数法C语言相关程序#include#includefloat d,y,y0,y1,y2,y3,r=1,c=0.1;float x12, x22, x32,s2,a2,b2;int i,n=2; float f(float x,float r)float z; z=x0*x0+x1*x1-r/(x0-1); return z;waitui()float h0=0.03,h=h0; y1=f(x1,r); for(i=0;in;i+) si=si*h; for(i=0;iy1) for(i=0;in;i+) si=-si; for(i=0;in;i+) x3i=x1i;y3=y1; for(
2、i=0;in;i+) x1i=x2i;y1=y2; for(i=0;in;i+) x2i=x3i;y2=y3;for(i=0;in;i+) x3i=x2i+si;y3=f(x3,r);while(y3y2)for(i=0;in;i+) si=si*2;for(i=0;in;i+) x1i=x2i; y1=y2;for(i=0;in;i+) x2i=x3i;for(i=0;in;i+) x2i=x3i;for(i=0;in;i+) x3i=x2i+si;y3=f(x3,r);for(i=0;in;i+)ai=x1i;bi=x3i;huangjin()d=0.618;waitui();c=0.2;
3、for(i=0;i=y2)for(i=0;in;i+) ai=x1i;for(i=0;in;i+) x1i=x2i;y1=y2;for(i=0;in;i+) x2i=ai+d*(bi-ai);y2=f(x2,r);elsefor(i=0;in;i+) bi=x2i;for(i=0;in;i+) x2i=x1i; y2=y1;for(i=0;i=c)if(y1=y2)for(i=0;in;i+) ai=x1i;for(i=0;in;i+) x1i=x2i;y1=y2;for(i=0;in;i+) x2i=ai+d*(bi-ai);y2=f(x2,r);elsefor(i=0;in;i+) bi=
4、x2i;for(i=0;in;i+) x2i=x1i; y2=y1;for(i=0;in;i+) x1i=bi-d*(bi-ai);y2=f(x2,r);for(i=0;in;i+) x1i=0.5*(ai+bi);main( )float x02,e=0.03,f=0.01,sum;x00=3;x01=3;s0=0;s1=1;y0=x00*x00+x01*x01 ;doif(s11)s0=1;s1=0;elses0=0;s1=1;for(i=0;in;i+)x1i=x0i;huangjin();sum=0;for(i=0;in;i+)sum+=(x1i-x0i)*(x1i-x0i);if(sqrt(sum)e&abs(y1-y0)/y0f)break;for(i=0;in;i+)x0i=x1i;r=r*c;y0=x00*x00+x01*x01-r/(x00-1)*c);while(1);printf(the best result:n);for( i=0;in;i+)printf(x(%d)=%f,i+1,x1i);y=x10*x10+x11*x11-r/(x10-1);printf(ny*=%fn,y);getch();