您的位置:首页 > 其它

二分法(计算方法)

2010-11-09 20:56 162 查看
简单二分法

//采用二分法求方程 f(x)=x3-x-1=0在区间[1,2]内的一个实根, 使误差不超过0.001。要求给定方程条件和误差范围。
#include"iostream"
#include"math.h"
using namespace std;
float fun( float x )
{
float y;
y=x*x*x-x-1;
return y;
}
int main()
{

float a=1.0000,b=2.0000,x,y2,y1,m,n;int k;
printf("k         a              b              x               f(x)\n");
printf("-----------------------------------------------------------\n");

if( fun(a)*fun(b)>0)   return 0;
else
{

for( k=1; fun(a)*fun(b)<=0,k<12;k++ )
{

m=(b-a)/pow(2,k+1);
x=(a+b)/2;
y2=fun(x);
y1=fun(a);

if(fabs(y2)<m)  return 0;
if(y1*y2<0)   {  b=x; }
else  { a=x ;   y1=fun(x) ;}
n=(b-a)/pow(2,k+1);
if((b-a)>=n)
if(k<10) printf("%d       %.9lf     %.9lf     %.9lf     %.9lf\n",k,a,b,x,fun(x));
else   printf("%d      %.9lf     %.9lf     %.9lf     %.9lf\n",k,a,b,x,fun(x));

}

}

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