Bisection method, 是一种方程式根的近似值求法。
二分法求方程的近似解
用实例来解答,比如求 Y^3+Y-10=0的在区间Y[0,3]之间的根,先将Y=0代入方程左边,左边=-10,将Y=3代入左边,左边=20,这样已经创造出了一正一负,在0-3之间必有解,找中点.Y=1.5代入,如果是正,就保留负的那一头,如果是负就保留正的那一头,然后重复这一过程,不断找中点,只到等式左边接近或等于零,就解得了近似根或准确根.
//例1:用二分法求方程x^3+4x-10=0在区间[1,2]内的根(精确到0.00001)
代入1得-6,代入2得6,满足二分求方程的解
#include <stdio.h>
#include <math.h>
double f(double x)
{
return pow(x,3)+4*x-10;
}
int main()
{
double a=1, b=2, limit=0.00001;//a,b为区间,limit为精确程度
if(f(a)*f(b)>0)
printf("无法用二分法求解\n"); //假设f(a)=7,f(b)=13,f(x)=0?
else {
while((b-a)>limit {
if(f((a+b)/2)*f(b)<0) //一边为正,一边为负
a=(a+b)/2;
else //同号
b=(a+b)/2;
}
printf("%.5f\n%.5f",a,b);
}
return 0;
}
网友评论