用C++编写程序 用牛顿迭代法求方程 3*x*x*x-4*x*x-5*x+13=0 在x=1附近的根,要求精度为10的-6次方 5

 我来答
佬的啊我沙沟曾08
2012-03-27 · TA获得超过1045个赞
知道小有建树答主
回答量:305
采纳率:100%
帮助的人:322万
展开全部
#include <iostream>
#include <cmath>
using namespace std;
static k=0;
static int count=1;

double f(double x)
{
return (3*x*x*x-4*x*x-5*x+13);//返回f(x)=3*x*x*x-4*x*x-5*x+13的值
}
int main()
{
double x0,x1,x2;
double e=0.000001;//精度
cout<<"请输入任意两个数作为初值,X0<X1"<<endl;
cin>>x0>>x1;
x2=x1-f(x1)*(x1-x0)/(f(x1)-f(x0));
while(x2-x1>e||x1-x2>e)
{
x0=x1;
x1=x2;
x2=x1-f(x1)*(x1-x0)/(f(x1)-f(x0));
count+=1;
}
cout<<"方程的根为:"<<x2<<endl;
cout<<"迭代的次数为:"<<count<<endl;
return 0;
}
函安白zK
2012-03-27 · TA获得超过3994个赞
知道大有可为答主
回答量:1434
采纳率:50%
帮助的人:725万
展开全部
感觉楼上的回答有点问题,x2=x1-f(x1)*(x1-x0)/(f(x1)-f(x0)); 没有用到方程导数,是割线法?
下面是百度百科上的代码供参考。只要令 a=3 b=-4 c=-5 d=13 x=1 就可以了

C++代码
  //此函数是用来求3元一次方程ax^3+bx^2+cx+d=0的解
  //比如 x^3-27=0,我们就可以输入1 0 0 -27,这样我们就可以得到一个解
  #include<iostream>
  #include<cmath>
  using namespace std;
  int main()
  {
  double diedai(double a,double b,double c,double d,double x);
  double a,b,c,d;
  double x=1.0;
  cout<<"请依次输入方程四个系数:";
  cin>>a>>b>>c>>d;
  x=diedai(a,b,c,d,x);
  cout<<x<<endl;
  return 0;
  }
  double diedai(double a,double b,double c,double d,double x)
  {
  while(abs(a*x*x*x+b*x*x+c*x+d)>0.000001)
  {
  x=x-(a*x*x*x+b*x*x+c*x+d)/(3*a*x*x+2*b*x+c);
  }
  return x;
  }

参考资料: http://baike.baidu.com/view/643093.htm

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式