📄 黄金分割法.c
字号:
#include "stdio.h"
#include "math.h"
double f(double x)
{
return (x-2)*(x-3);
}
/*
黄金分割法
a,b---搜索区间[a,b]; e---精度
x,y---最优解X*,F*
*/
void main( void)
{
double a1,y1,a2,y2,a,b,k,e;
a=0; b=10; e=0.001; k=0.618;
a1=b-k*(b-a); y1=f(a1);
a2=a+k*(b-a); y2=f(a2);
while(fabs(b-a)>e)
{
if(y1>=y2)
{a=a1; a1=a2;y1=y2;
a2=a+k*(b-a); y2=f(a2);
}
else {
b=a2; a2=a1; y2=y1;
a1=b-k*(b-a); y1=f(a1);
}
}
printf("x*=%f\n",(a1+a2)/2);
printf("y*=%f\n",y1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -