二分法

二分法_4分词条

目录 [隐藏]

二分法 简介

       
一般地,对于函数f(x),如果存在实数c,当x=c是f(c)=0,那么把x=c叫做函数f(x)的零点

方程即要求f(x)的所有零点。

先找到a、b,使f(a),f(b)异号,说明在区间(a,b)内一定有零点,然后求f【(a+b)/2】,

现在假设f(a)<0,f(b)>0,a<b

如果f【(a+b)/2】=0,该点就是零点,

如果f【(a+b)/2】<0,则在区间((a+b)/2,b)内有零点,按上述方法在求该区间中点的函数值,这样就可以不断接近零点

如果f【(a+b)/2】>0,同上

通过每次把f(x)的零点所在小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值,这种方法叫做二分法。

由于计算过程的具体运算复杂,但每一步的方式相同,所以可通过编写程序来运算。

例:(C语言)

方程式为:f(x) = 0,示例中f(x) = 1+x-x^3

二分法 使用示例:

       


input a b e: 1 2 1e-5

solution: 1.32472

源码如下:

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <assert.h>

double f(double x)

{

return 1+x-x*x*x;

}

int main()

{

double a = 0, b = 0, e = 1e-5;

printf("input a b e: ");

scanf("%lf%lf%lf", &a, &b, &e);

e = fabs(e);

if (fabs(f(a)) <= e)

{

printf("solution: %lg\n", a);

}

else if (fabs(f(b)) <= e)

{

printf("solution: %lg\n", b);

}

else if (f(a)*f(b) > 0)

{

printf("f(%lg)*f(%lg) > 0 ! need <= 0 !\n", a, b);

}

else

{

while (fabs(b-a) > e)

{

double c = (a+b)/2.0;

if (f(a)* f ( c ) < 0)

b = c;

else

a = c;

}

printf("solution: %lg\n", (a+b)/2.0);
}
return 0;
}

附图

上传图片 

互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。如需转载,请注明来源于www.hudong.com

被引用: 二分法已被如下媒体引用 我来补充
互动百科联盟百科联盟
开放分类: 我来补充
心理学
心理学术语
数学术语
神经科学

讨论区

更多>>

编辑者

共6人协作

相关词条

特殊函数
勒贝格积分
函数逼近论
草堂寺
8.4静态食管测压
函数
递归论
微积分
数系
逻辑函数
更多

英译

Copyright © 2005-2009 hudong.com Ltd. All Rights Reserved. 互动在线 版权所有