作业帮 > 综合 > 作业

用二分法求方程2x3-4x2+3x-6=0在(-10,10)之间的根.自己写的c程序,可是出错了.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/11 15:05:17
用二分法求方程2x3-4x2+3x-6=0在(-10,10)之间的根.自己写的c程序,可是出错了.
#include
#include
void main()
{
float x0x1,x2,fx0,fx1,fx2;
x1=-10;
x2=10;
fx1=2*pow(x1,3)+4*pow(x1,2)+3*x1-6;
fx2=2*pow(x2,3)+4*pow(x2,2)+3*x2-6;
do
{
x0=(x1+x2)/2;
fx0=2*pow(x0,3)+4*pow(x0,2)+3*x0-6;
if(fx1*fx0=1e-5);
printf("x=%6.2f",x0);
}
不知道为什么就是不对,改了一下fx0=2*pow(x0,3)+4*pow(x0,2)+3*x0-6;这句就行了,但是就是不知道为什么错,难道是pow用错了?
大侠们,
#include <iostream>
using namespace std;
double p(double x)
{
return 2*x*x*x-4*x*x+3*x-6;
}
int main()
{
double a,b;
cin >> a >> b;
double fa = p(a),fb = p(b),fm;
do
{
fm = p((a+b)/2);
if(fm==0) break;
if(fm*fa<0) b = (a+b)/2;
else if(fm*fb<0) a = (a+b)/2;
}while(b-a>0.00001);
cout << ((b+a)/2) << endl;
}
------
你的修改过的:
#include <stdio.h>
#include <math.h>
int main()
{
float a=-10.0;
float b=10.0;
float fc,fa,fb,c;
c=(a+b)/2;
fc=2*pow(c,3)-4*pow(c,2)+3*c-6;
fa=2*pow(a,3)-4*pow(a,2)+3*a-6;
fb=2*pow(b,3)-4*pow(b,2)+3*b-6;
if (fc==0)
printf("the result is %lf.\n",c);
else
{
do
{
c=(a+b)/2;
if(fc==0) break;
if (fa*fc<0)
else if(fb*fc<0)
}
while (b-a>0.1e-6);
printf("the result is %lf.\n",c);
}
}
另外,虚机团上产品团购,超级便宜