给定精确度ξ,用二分法求函数f(x)零点近似值的步骤如下:
1 确定区间[a,b],验证f(a)·f(b)<0,给定精确度ξ.
2 求区间(a,b)的中点c.
3 计算f(c).
(1) 若f(c)=0,则c就是函数的零点;
(2) 若f(a)·f(c)<0,则令b=c;
(3) 若f(c)·f(b)<0,则令a=c.
(4) 判断是否达到精确度ξ:即若┃a-b┃<ξ,则得到零点近似值a(或b),否则重复2-4.
我省了验证的部分。
#include "math.h"
#include "stdio.h"
#define PI 3.141592653
main()
{
double a =0.0, b =PI/2.0 ,c,d= 1e-3;
int i;
for(i=0;fabs(a-b)>d;i++)
{
c=(a+b)/2.0;
if((a*sin(a)-1)*(c*sin(c)-1)<0)
b=c;
if((b*sin(b)-1)*(c*sin(c)-1)<0)
a=c;
}
printf("近似值为%f\n分为%d",a,i);
}
[
本帖最后由 放弃那个阿姨 于 2009-10-4 10:22 编辑 ]