求:一般形式1元3次方程解法!~

来源:百度知道 编辑:UC知道 时间:2024/05/14 06:59:34
呵呵!~

对于三次方程
ax^3+bx^2+cx+d=0
令x=y-b/(3a),方程化为
y^3+py+q=0
其根为
x1=u+v
x2=ue+ve^2
x3=ve+ue^2
其中
e=cos(2*PI/3)+isin(2*PI/3)
u=(-q/2+sqrt(q^2/4+p^3/27))^(1/3)
v=(-q/2-sqrt(q^2/4+p^3/27))^(1/3)
这就是Cartan公式。

因为我还是初学者,最近研究了一下关于一元三次方程的解法,参考有关资料,弦截法最为简便,假设我们来解

x3-3x2-6x+8=0这个方程在区间[-3,5]中求值。

以下是我设计的程序:

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

double Func(double);
int BowRoot(double,double,double,double,double *,int,int *);

void main()
{
int i,n,m;
double a,b,h,eps,*x;
n=3; //方程解的预估值
x=(double*)calloc(n,sizeof(double)); //开辟内存空间
if(x==NULL)
{
printf("内存分配失败\n");
exit(1);
}
a=-3; //区尖起始端点
b=5; //区尖终止断点
h=1; //步长
eps=1.e-8; //要求达到的精度
BowRoot(a,b,h,eps,x,n,&m); //调用二分法函数