#include <math.h>
#include <stdio.h>
/* 函数 f(x)=(x-3)2 */
double f(double x)
{ return (x-3)*(x-3);
}
/* 求搜索区间[a,b]的函数, x0---初始点; h0---初始步长 */
void main(void)/* 参照流程图自己写出外推法(进退法)程序的内容 */
{
double x0,a1,y1,a2,y2,a3,y3,h;
x0=0; h=1;
a1=x0; y1=f(a1);
a2=a1+h; y2=f(a2);
if(y2>y1)
{
h=-h;
a3=a1;a1=a2;a2=a3;
y3=y1;y1=y2;y2=y3;
}
a3=a2+h;y3=f(a3);
while(y3<y2)/*表达式为0时跳出循环*/
{
h=2*h;
a1=a2;y1=y2;
a2=a3;y2=y3;
a3=a2+h;y3=f(a3);
}
if(h<0)
{a2=a1;a1=a3;a3=a2;
}
printf("a1=%f\n",a1);
printf("a3=%f\n",a3);
}
评论0