c语言编程:用黄金分割法求 minf(x)=x2+2x+1 急!!!! 黄金分割交易法盈利模型轩明
给,已经编译运行确认: #include "math.h" #include "stdio.h" #define f(x) x*x+2*x+1 //一元函数,这里按照你的要求写的是:x2+2x+1 //函数功能是用黄金分割法实现求一元函数 的最优解 double hj(double *a,double *b,double e,int *n) { double x1,x2,s; if(fabs(*b-*a)<=e) s=f((*b+*a)/2); else { x1=*a+0.382*(*b-*a); x2=*a+0.618*(*b-*a); if(f(x1)>f(x2)) *a=x1; else *b=x2; *n=*n+1; s=hj(a,b,e,n); } return s; } main() { double s,a,b,e; int n=0; scanf("%lf %lf %lf",&a,&b,&e); // 输入区间[a,b]和精度e的值 s=hj(&a,&b,e,&n); //调用hj函数,其中n代表迭代次数 printf("a=%lf,b=%lf,s=%lf,n=%d ",a,b,s,n); } 运行时: 输入:0.6 0.5 0.1 输出结果为: 0.6 0.5 0.1 a=0.600000,b=0.500000,s=2.402500,n=0
版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。