X^3+X^2-1=0

求解X
速度!!
步骤!!!

这个高阶方程的解可以用matlab求解。
用笔算也能算,请看下面:
令f(x)=X^3+X^2-1,
f(x)的导数=3*x^2+2*x,令其大于0,得x>0或者x<-2/3.f(x)在x<-2/3,与x>0为增,其余为减函数。由于f(-2/3)<0,故只有一根。

因为f(0)=-1<0

f(1)=1>0

所以x的取值在【0,1】中

下面我们精确求其解其根

f(x)的导数的导数=6*x+2

在【0,1】上

f(x)的导数>0

f(x)的导数的导数>0

按f(x)的导数的导数与f(1)同号,所以令Xo=1,

根据求解的切线公式Xn=Xn-1-(f(Xn-1)/(f(Xn-1)的导数))

有X1=1-(1/5)=4/5
X2=4/5-((19/125)/(264/125))=0.728
X3=0.728-(-0.084/3.046)=0.756
X4=0.756-(0.0036/3.2266)=0.755
X5=0.755-(0.00039/3.22)=0.755

所以X的值约为0.755 (精确到0.001)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-10-24
既然你上过大学,你应该会牛顿迭代法。
y=x^3+x^2-1
y'=3x^2+2x
所以x(n+1)=xn-(xn^3+xn^2-1)/(3xn^2+2xn)

因为y'=3x^2+2x,-2/3<x<0时,y'<0,y递减,所以
x>0,x<-2/3,y'>0,y递增
所以x=0是极小值,x=-2/3是极大值
x=0,y=-1,x=-2/3,y=-23/27
所以方程只有一个根,且大于0

x=0,y=-1<0
x=1,y=1>0,
所以根在(0,1)
可令x1=0.5
代入x(n+1)=xn-(xn^3+xn^2-1)/(3xn^2+2xn)
x2=6/7
x3=0.7641369
x4=0.754963
x5=0.75488
x6=0.75488
保留4位小数
得x=0.7549
第2个回答  2008-10-24
用牛顿迭代公式Xn+1=Xn-f(Xn)/f'(Xn)
其中f(X)=X^3-a

float CubeRoot(float a){
float root=1.0; /*迭代初始值,随便取一个数,但不要是0*/
while(fabs(root*root*root-a)>=0.0001) /*设定迭代精确度,如果精度比较高的话可以把root定义为double,防止死循环。或者可以在循环内部根据迭代次数调整精度*/
root=root-(root*root*root-a)/(3*root*root);

return root;
}

int main(void){
float a;
float CubeRoot(float a);
printf("Please input a: "); scanf("%f",&a);
printf("\nThe cube root of %f is %f",a,CubeRoot(a));
return 0;
}
PS:编程实现这个公式的就算即可,要不然用皮尔卡丹公式会很复杂。
第3个回答  2008-10-24
令F(x)=x^3+x^2-1
对其求导,有F'(x)=3x^2+2x
可知,在x=0和-2/3处出现F(x)的极值,x=0时F(x)=-1;x=-2/3时F(x)=-23/27,都小于零,x<-2/3时,函数趋向负无穷。所以F(x)在x<0范围内不过零,而是永远小于零,原方程在x<0区间无解。
x>0时,函数单调上升,只过零一次,所以方程只在这一区间有一个解
F(1/2)<0,而F(1)>0,所以原方程的解x在(1/2,1)区间内。
第4个回答  2008-10-24
明显x≠0,令y=1/x,方程两边除以(-x³)得
y³-y-1=0

然后用卡丹公式解上述方程的实根为
y=³√[(1+√23/27)/2]+³√[(1-√23/27)/2]
于是x=1/y=1/{³√[(1+√23/27)/2]+³√[(1-√23/27)/2]}

系数都是1,再好代不过了。