东风本田社会招聘:什么叫二分法?

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/04 12:12:21
今天看到这个说法 很诧异

哲学的吗?就是一分为二的思维方式
考虑问题要考虑正反两方面
把事物相矛盾的两个方面充分进行考虑,本着两利相衡取其大,两害相衡取其轻的原则进行选择决定。

从数学角度看,二分法, 又称分半法, 是一种方程式根的近似值求法.
若要求已知函数 f(x) = 0 的根 (x 的解), 则:

先定义一个区间 [a, b], 使其包含著方程式的根.
求该区间的中点, 并找出 f(m) 的值
若 f(m) 与 f(a) 正负号相同则取 [m, b] 为新的区间, 否则取 [a, m].
重覆第2步至理想精确度为止.

例子
例: 求方程 sinh x = cos x 的解, 其中 sinh 是双曲正弦、cos 是余弦 及 x 以弧度量度.

定义 f(x) = sinh x - cos x. 因此这里是要求 f(x) = 0 的根.
画出 y = f(x) 可大约得知其根约在 0.5 和 1 之间, 故使初始区间的 [0.5, 1].
此区间之中点为 0.75.
因 f(0.5) ≈ -0.3565, f(0.75) ≈ 0.0906, 其正负号不同, 故令新区间为 [0.5, 0.75]
又新区间的中点为 0.625, 而 f(0.625) ≈ -0.1445, 与 f(0.5) 正负号相同, 故新区间为 [0.625, 0.75].
不断重覆运算即得 f(x) = 0 的根约为 0.7033.
从哲学角度就是考虑问题的方法,要懂得考虑问题的利弊或正反两面.

二分法, 又称分半法, 是一种方程式根的近似值求法

两分法,也叫全面分析法。
就是:看问题,办事情不要只看到它的一面。
如:评价一个人,就既要讲啊的优点,也要讲他的缺点。
做一件事,既要看到其有利,也要看到其不利。

http://www.maths168.com/Soft/kejian/gykj/200511/5158.html

算法
若要求已知函数 f(x) = 0 的根 (x 的解), 则:

先定义一个区间 [a, b], 使其包含著方程式的根.
求该区间的中点, 并找出 f(m) 的值
若 f(m) 与 f(a) 正负号相同则取 [m, b] 为新的区间, 否则取 [a, m].
重覆第2步至理想精确度为止.

例子
例: 求方程 sinh x = cos x 的解, 其中 sinh 是双曲正弦、cos 是余弦 及 x 以弧度量度.

定义 f(x) = sinh x - cos x. 因此这里是要求 f(x) = 0 的根.
画出 y = f(x) 可大约得知其根约在 0.5 和 1 之间, 故使初始区间的 [0.5, 1].
此区间之中点为 0.75.
因 f(0.5) ≈ -0.3565, f(0.75) ≈ 0.0906, 其正负号不同, 故令新区间为 [0.5, 0.75]
又新区间的中点为 0.625, 而 f(0.625) ≈ -0.1445, 与 f(0.5) 正负号相同, 故新区间为 [0.625, 0.75].
不断重覆运算即得 f(x) = 0 的根约为 0.7033.

Pseudocode
输入 f(x) 的定义
输入 a 和 b 为初始区间

重覆如下:
m := (a + b) / 2
如果 f(m) * f(a) < 0 则
b := m
否则
a := m
直至满意为止

输出 m 为 f(x) = 0 的根

我编的 二分法解x^3-x-1=0 求解

float f(float xx)
{float s;
s=xx*xx*xx-xx-1;
return(s);
}
p()
{printf(" ********************************\n"); }
p1()
{printf(" 二分法\n");}
main()
{
float x,a,b,ep;
int i=0;
char j;
p();
p1();
p();
printf("请输入 a、b 的值和精度:\n");
scanf("%f%f%f",&a,&b,&ep);
do {
i++;
x=(a+b)/2.0;
if(f(a)*f(x)<0) {b=x; j='+';}
else {a=x;j='-';}
printf("第 %d 次计算\ta=%f\tb=%f\tx=%f\tf(x) %c\t\n",i,a,b,x,j);
}
while((b-a)>ep);

}