A-A+

二分法求方程的近似解

2012年10月17日 分治 暂无评论 阅读 1,589 次

二分法求方程的近似解
用实例来解答,比如求 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,满足二分求方程的解
[cpp]
#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;
}
[/cpp]
//例2:用二分法求方程x^2-2x-2=0
思路:二元一次方程,用公式可知道这有两个解,然后且因为抛物线有两个单调区间,所以你要分两次讨论,由方程可求得函数的最低点为1,代入可求得值为-3,以此为分界,再代入0,可求得值为-2,说明正根在右边,然后你取2,求得值为-2,取3求得值为1,说明在2到3之中有零点,然后再取它们总和除以二的值2.5,求得值为小于0,再把区间缩小到2.5至3,然后以同样的方法一直缩小范围,知道左右两个数相减小于或等于0.1的时候(逐个排解)

标签:

给我留言

Copyright © C/C++程序员之家 保留所有权利.   Theme  Ality 浙ICP备15011757号-3

用户登录