您的位置:首页 > 其它

二分法

2010-04-13 00:04 183 查看
对于在区间 [a , b] 上连续不断,且满足 f (a) f (b) < 0 的函数 y = f ( x) , 通过不断地把函数 f ( x) 的 零点所在的区间一分为二, 使区间的两个端点逐步逼近零点, 进而得到零点近似值的方法叫做二分法

相关习题:

《C程序设计》(第三版)6.13

《C程序设计教程》 5.13

Solution by Mutoo:

Code:

#include<stdio.h>

#include<math.h>

double F(double x) // 构造原函数

{

return 2*pow(x,3)-4*pow(x,2)+3*x-6; // f(x)=2x^3-4x^2+3x-6

}

void main()

{

double left,right,mid;

left = -10; // 初始化左右边界

right = 10;

do

{

mid = (left+right)/2;

if(F(left)==0) mid=left;

if(F(right)==0) mid=right;

if(F(mid)==0) break; // 如果边界或中间为零点,直接跳出循环

else if(F(left)*F(mid)<0) right=mid; // 否则定义新的边界使范围缩小

else if(F(mid)*F(right)<0) left=mid;

else

{

printf("Error!"); // 如果给定的边界不能使函数的值异号,则无法用二分法解题=>报错。

break;

}

}while(fabs(F(mid))>10e-6); // 误差指导

printf("root=%lf/n",mid);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: