求教高手,C++源程序改错!!!!

来源:百度知道 编辑:UC知道 时间:2024/05/23 01:10:09
用弦截法求根,要求在区间[x1,x2]之间求根,我编的源程序如下,可是每次“该区间内无根”这句话都会出现,请高手帮我改一改~~~~
#include<iostream>
#include<cmath>
using namespace std;
double num(double x)
{return pow(x,3)-7.8*pow(x,2)+18.5*x-11.3;
}

void main()
{ double x1,x2,c,d,x;
cout<<"请输入区间的两个端点值:"<<endl;
cin>>x1>>x2;
if(num(x1)*num(x2)>0)
cout<<"在该区间内无根:"<<endl;
else if(num(x1)*num(x2)<0)
{
do{c=num(x1);
d=num(x2);
x=(x1*d-x2*c)/(d-c);
if(c*d<0)
x1=x;
else x2=x;}
while (num(x)>1E-100);

cout<<"根为:"<<x<<endl;}
}
我把问题再说清楚一点,不管有没有根,都会出现“该区间没有根”,当然也会出现“根是。。。。”(有根的话),可能的话,请帮我运行一下,找找问题的原因~~~

你的这个if语句有错误

if(num(x1)*num(x2)>0)

cout<<"在该区间内无根:"<<endl;

如图所示(图很丑,不要笑,随便画的),在x1 ,x2内仍然有根

我给你提供一个程序供参考,然后你在把你的改改

哎,像我这样的好人哪里去找啊

//=================================================================

#include <iostream>

#include <iomanip>

#include <cmath>

using namespace std;

double root(double,double);

double f(double);

double xpoint(double,double);

 

int main()

{double x1,x2,f1,f2,x;

 do

  {

   cout<<"input x1,x2:";

   cin>>x1>>x2;

   f1=f(x1);

   f2=f(x2);

  }while(f1*f2>=0);

 x=root(x1,x2);

 cout<<setiosflags(ios::fixed)<<setprecision(7);

 cout<<"A root of&nbs