《黄金分割法求极值(c编程)》由会员分享,可在线阅读,更多相关《黄金分割法求极值(c编程)(3页珍藏版)》请在人人文库网上搜索。
1、流程图:b=a+i*h; i+f(a),f(b)输入a,h;i=1,s,wf(a)f(b)x1=a+(1-w)(b-a);x2=a+w(b-a);x0=(a+b)/2min=f(x0)X1=X1;X2=a+(1-w)(b-a)a=x1|b-a|#include double f(double x)double y;y=(3.0*x*x-4.0)*x*x+2.0;return(y);void main()double a,b,x1,x2,w,s,min,x0;int i=1;double h;w=(sqrt(5)-1)/2;s=1e-5;printf(input a,h:n);scanf(%lf。
2、,%lf,&a,&h);do /*确定初始区域a,b*/b=a+i*h;i+;printf(i=%d,b=%lfn,i,b);while (f(a)f(b);x1=a+(1-w)*(b-a);x2=a+w*(b-a);printf(%lf,%lfn,a,b);loop:if(f(x1)s)x2=x1;x1=a+(1-w)*(b-a);printf(x1=%lf,x2=%lfn,x1,x2);goto loop;else f(a+b)/2);else a=x1;if(fabs(b-a)s)x1=x2;x2=a+w*(b-a);printf(x1=%lf,x2=%lfn,x1,x2);goto loop;else f(a+b)/2);x0=(a+b)/2;min=f(x0);printf(x0=%lf,min=%lfn,(a+b)/2,f(a+b)/2);运算结果。