二分法求方程2x3-4x2+3x=0在(-10,10)附近的根
用二分法求方程2x3-4x2+3x=0在(-10,10)附近的根(二分法:先找到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(x)的零点所有小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值,该值即是方程的根)。
#include "Stdio.h"
#include "Conio.h"
#include"math.h"
void main()
{
double x,fx,fa,fb,a=-10,b=10,z=0.0001;
fa=2*a*a*a-4*a*a+3*a;
fb=2*b*b*b-4*b*b+3*b;
if(fa*fb<0)
{
do
{
x=(a+b)/2;
fx=2*x*x*x-4*x*x+3*x;
if(fx<0)
{
a=x;
fa=2*a*a*a-4*a*a+3*a;
}
else
{
b=x;
fb=2*b*b*b-4*b*b+3*b;
}
}while(fabs(fa-fb)>z);
printf("The root is:%lf\n",x);
}
getch();
}
#include "Conio.h"
#include"math.h"
void main()
{
double x,fx,fa,fb,a=-10,b=10,z=0.0001;
fa=2*a*a*a-4*a*a+3*a;
fb=2*b*b*b-4*b*b+3*b;
if(fa*fb<0)
{
do
{
x=(a+b)/2;
fx=2*x*x*x-4*x*x+3*x;
if(fx<0)
{
a=x;
fa=2*a*a*a-4*a*a+3*a;
}
else
{
b=x;
fb=2*b*b*b-4*b*b+3*b;
}
}while(fabs(fa-fb)>z);
printf("The root is:%lf\n",x);
}
getch();
}