三次方程怎么解

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/13 18:12:42
三次方程怎么解

三次方程怎么解
三次方程怎么解

三次方程怎么解
白痴

用系数相等原理
设f(x)=0 = k(x+a)(x+b)(x+c)
将后面的式子展开 ,利用系数相等,可以得到几套a,b,c

三次方程要具体问题具体分析,有些特殊的方程是可以一眼看出来的。

中学的解法就是因式分解法。

在大学里面,学了任何一个实多项式都可以唯一的分解成一次与二次实多项式的乘积的结论。所以三次方程最坏的情况也是可以分解为(x-m)(a*x^2+b*x+c)。转化为二次方程的解和一次方程解的问题。...

全部展开

三次方程要具体问题具体分析,有些特殊的方程是可以一眼看出来的。

中学的解法就是因式分解法。

在大学里面,学了任何一个实多项式都可以唯一的分解成一次与二次实多项式的乘积的结论。所以三次方程最坏的情况也是可以分解为(x-m)(a*x^2+b*x+c)。转化为二次方程的解和一次方程解的问题。

收起

可以用迭代法,牛顿迭代法
牛顿迭代法要计算
(1) y1=f(x) 在 x 的函数值
(2) d1=f(x) 的一阶导数 在 x 的值
你可以写两个函数,分别计算y1,d1
如果一阶导数有解析解,则可用赋值语句,否则要写数值解子程序。
步骤:
设解的精度,例 float eps=0.000001;
设x初值,x1;

全部展开

可以用迭代法,牛顿迭代法
牛顿迭代法要计算
(1) y1=f(x) 在 x 的函数值
(2) d1=f(x) 的一阶导数 在 x 的值
你可以写两个函数,分别计算y1,d1
如果一阶导数有解析解,则可用赋值语句,否则要写数值解子程序。
步骤:
设解的精度,例 float eps=0.000001;
设x初值,x1;
算y1=f(x1);
迭代循环开始
算一阶导数 在 x1 的值 d1
用牛顿公式 算出 x2; [x2 = x1 - y1 / d1]
如果 fabs(x2-x1) > eps 则从新迭代 -- 用新的函数值和一阶导数值推下一个 新x.
牛顿迭代法:
#include
#include
#include
#define MAXREPT 1000
float f(float x)
{return(x-exp(-x));
}
float df(float x)
{return(1+exp(-x));
}
float iterate(float x)
{float x1;
x1=x-f(x)/df(x);
return(x1);
}
void main()
{float x0,x1,eps,d;int k=0;
printf("\n please input x0,eps:");
scanf("%f,%f",&x0,&eps);
printf("\n k xk\n");
printf(" %d %f\n",k,x0);
do
{k++;
x1=iterate(x0);
printf(" %d %f\n",k,x1);
d=fabs(x1-x0);
x0=x1;
}
while((d>=eps)&(kif(kprintf("the root is x=%f, k=%d\n",x1,k);
else
printf("\n The iteration is failed!\n");
getch();
}

收起