如何编程解一元三次方程

 我来答
kn...v@163.com
2017-07-06 · 超过28用户采纳过TA的回答
知道答主
回答量:104
采纳率:0%
帮助的人:38.9万
展开全部
(1)取两个不同的点x1,x2,如果f(x1)和f(x2)符号相反,则(x1,x2)区间内必有一个根。如果f(x1)和f(x2)同符号,则应改变x1,x2,直到f(x1)和f(x2)异号为止。注意x1和x2的值不应差太大,以保证(x1,x2)区间内只有一根。
(2)连接(x1,f(x1))和(x2,f(x2))两点,此线交x轴于x,x的坐标可以用下式求出:x=(x1*f(x2)-x2*f(x1))/f(x2)-f(x1),
再从x求出f(x);
(3)若f(x)和f(x1)同符号,则根必在(x,x2)内,此时将x作为新的x1;如果f(x)和f(x2)同符号,则表示根在(x1,x),此时将x作为新的x2。
(4)重复步骤(2)和(3),知道|f(x)|<e,e是一个很小的数,例如10^-6;

程序如下:
#include<stdio.h>
#include<math.h>
float f(float x)
{
float y;
y=((x-5.0)*x+16.0)*x-80.0;
return y;
}

float xpoint(float x1,float x2)
{//求(x1,f(x1)和(x2,f(x2))连线与x轴的交点
float y;
y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
return y;
}//xpoint函数

float root(float x1,float x2)
{
float x,y,y1;
y1=f(x1);
do
{
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式