C语言牛顿迭代法求2x^3-4x^2+3x-6=0在1.5附近的根

#include<stdio.h>
#include<math.h>
void main()
{
float b,c,y,y1,root,y2,x;
x=1.5;
do
{
b=pow(x,3);
c=sqrt(x);
y=b*2-4*c+3*x-6;
y1=6*c-8*x+3;
root=x; ①
x=x-y/y1; ②
y2=root-x;
}
while(fabs(y2)>1e-5);
printf("%f\n",root);
}

编译和链接都通过了,就运行的时候显示溢出(一段英文)。。
当我把1式和2式对调位置后,运行有结果。。但貌似结果不对。。
跪求解脱。。大虾们,帮帮忙吧~~~

#include<stdio.h>
#include<math.h>

float Newton(float a,float b,float c,float d)
{
float x=1,x0,f,f1;
do
{
x0=x;
f=((a*x0+b)*x0+c)*x0+d;
f1=(3*a*x0+2*b)*x0+c;
x=x0-f/f1;
}
while(fabs(x-x0)>=1e-5);
return x;
}
int main()
{
float a,b,c,d;
scanf("%f%f%f%f\n",&a,&b,&c,&d);
printf("%.2fx^3+%.2fx^2+%.2fx+%.2f=0\n",a,b,c,d);
printf("x=%.5f\n",Newton(a,b,c,d));
return 0;
}
我写了一个通用的,键盘输入系数从高次到低次,
你参考一下。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-29
c = sqrt(x); 这句是错的,sqrt是求根,应该是c = pow(x, 2);本回答被提问者采纳

...=2x3-4x2+3x-6=0在1.5附近的根。请给出运算结果
double x0,x1;x0=x;while(1){ x1= x0 - (*f)(x0)\/ (*f1)(x0);if (fabs(x1-x0)<eps) break;x0=x1;};return x1;} 运行与输出:input eps 1e-08 1e-08 2.000000

用牛顿迭代法求下面方程在1.5附近的根。 2x^3-4x^2+3x-6=0
f(x)=2x^3-4x^2+3x-6 f'(x)=6x^2-8x+3 x(n+1)=xn-(2xn^3-4xn^2+3xn-6)\/(6xn^2-8xn+3)x1=1.5 x2=2.3333 x3=2.0610 x4=2.0026 x5=2.0000 x6=2.0000 所以x=2

怎样用c语言编程解较复杂的方程
{ return (2*x*x*x-4*x*x+3*x-6);}

...=2x3-4x2+3x-6=0在1.5附近的根。请给出运算结果
x1=2 2x²+3=0 2x²=-3 x²=-3\/2 x=±√6i\/2

用牛顿迭代法求下列方程在1.5附近的根:2(x)∧3-4(x)∧2+3x-6=0...
double x=3.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...

用牛顿迭代法求方程在1.5附近的根
关于用牛顿迭代法求方程在1.5附近的根的方法如下:求方程的根,可以转换为求函数f(x)=2x3-4x2+3x-6的根,根据牛顿切线迭代法,我们可以设x0=1.5,设切线方程为:y=kx+b K=f(x)求导=F(x),切线方程过点(x0,f(x0))得:f(x0)=kx0+b,可知b=f(x0)-kx0;求切线方程与x轴的...

c语言编程~ 解方程
采用C语言编程解方程,有两种情况:1 简单的方程,比如一元一次方程,或者多元一次方程,以及一元二次方程等,这类数学上有固定的解题方法的,可以在程序中输入参数,并按照数学方法,进行求解。2 复杂的方程,比如高次方程,或者积分方程等,对于这类问题,在数学上有着自己的解法,但是移植到计算机中...

c语言 求方程x^3-2x-5=0在区间[1.5,2.5]的实根 麻烦写下程序和关键步骤...
上式称为牛顿迭代公式。用牛顿迭代法求解方程x^3-2x-5=0的实根的过程是:1.你想在谁附近求解,这个范围或者这个数值大多是题目已经给定了(本例是[1.5,2.5])2.令f(x)=x*x*x-2*x-5 3.x1=X 4.求f(x1)5.对f(x)求导,得到f1(x),求f1(x1)6.调整x,使x=x1-f(x1)\/f1(x1)7...

C语言编程 牛顿迭代法是什么 求解
牛顿迭代法是一种常用的计算方法,这个大学大三应该学过。具体为:设r是f(x) = 0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L,L的方程为y = f(x0)+f'(x0)(x-x0),求出L与x轴交点的横坐标 x1 = x0-f(x0)\/f'(x0),称x1为r的一次近似值。...

C语言 用牛顿迭代法求方程的根,并且输出迭代的次数
int i=0;\/\/i就是当前计算的次数 x1=1.5;do {i++;x0=x1;f=((2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x1=x0-f\/f1;printf("the d%th root is:%5.2f\\n",i,x1);}while(fabs(x1-x0)>=1e-5);printf("the time is d%\\n",i,);printf("附近的根是:%5....

相似回答