tceic.com
简单学习网 让学习变简单
当前位置:首页 >> 数学 >>

【题4】一元三次方程求解


【题 4】一元三次方程求解
有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数), 并约定该方程存在三个不同实根(根的范围在—100 至 100 之间),且根与根之差的绝对值≥1。 要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后 2 位。 提示:记方程 f(x)=0,若存在 2

个数 x1 和 x2,且 x1<x2,f(x1)*f(x2)<0,则在(x1,x2)之间一 定有一个根。 输入:a,b,c,d 输出:三个实根(根与根之间留有空格) 输入输出样例 输入: 1 -5 -4 20 输出: -2.00 2.00 5.00

题解
这是一道有趣的解方程题。为了便于求解,将原方程 f(x)=ax3+bx2+cx+d=0 变换成 3 2 f’(x)=x +b’*x +c’*x+d’=0 的形式(其中 b’= ? ? ,c’= ? ? ,d’= ? ? ) ,f(x)和 f’(x)的根不变。设 x 的值域(-100 至 100 之间)中有 x, 2 2 2
? ? ? ? ? ? ?b ? ?c? ?d ?

其左右两边相距 0.0005 的地方有 x1 和 x2 两个数,即 x1=x-0.0005 x2=x+0.0005 x1 和 x2 间的距离(0.001)满足精度要求(精确到小数点后 2 位) 。若出现如图 10.1.2 所示的两种情况之一,则 确定 x 为 f’(x)=0 的根。

图 10.1.2 有两种方法计算 f’(x)=0 的根 x: 1.枚举法 根据根的值域和根与根之间的间距要求(≥1),我们不妨将根的值域扩大 100 倍(-10000≤x≤10000),

x ? 0.05 x ? 0.05 ,x2= 。若区间端点 100 100 x 的函数值 f’(x1)和 f’(x2)异号或者在区间端点 x1 的函数值 f’(x1)=0,则确定 为 f’(x)=0 的一个根。由此得 100
依次枚举该区间的每一个整数值 x,并在题目要求的精度内设定区间:x1= 出算法: 输入方程中各项的系数 a,b,c,d ; 3 2 b←b/a; c←c/a; d←d/a; a←1; {将方程变换为 x +b’*x +c’*x+d’=0 的形式} for x←-10000 to 10000 do {枚举当前根*100 的可能范围} begin x1←(x-0.05)/100; x2←(x+0.05)/100; {在题目要求的精度内设定区间} if (f(x1)*f(x2)<0) or (f(x1)=0){若在区间两端的函数值异号或在 x1 处的函数值为 0,则确定 x/100 为根} then write(x/100:0:2,’’);

end;{for} 其中函数 f(x)计算 x +b*x +c*x+d: function f(x:extended):extended; begin f←x*x*x+b*x*x+c*x+d; end;{f}
3 2

{计算 x +b*x +c*x+d}

3

2

1. 分治法 枚举根的值域中的每一个整数 x(-100≤x≤100)。 由于根与根之差的绝对值≥1, 因此设定搜索区间[x1, 2], x 其中 x1=x,x2=x+1。若 ⑴f’(x1)=0,则确定 x1 为 f’(x)的根; ⑵f’(x1)*f’(x2)>0,则确定根 x 不在区间[x1,x2]内,设定[x2,x2+1]为下一个搜索区间 ⑶f’(x1)*f’(x2)<0,则确定根 x 在区间[x1,x2]内。 问题是,如果确定根 x 在区间[x1,x2]内的话(f’(x1)*f’(x2)<0),如何在该区间找到根的确切位置。采用二分 法,将区间[x1,x2]分成左右两个子区间:左子区间[x1,x]和右子区间[x,x2](其中 x=
x1 ? x 2 ): 2

如果 f’(x1)*f’(x)≤0,则确定根在左区间[x1,x]内,将 x 设为该区间的右指针(x2=x),继续对左区间进 行对分;如果 f’(x1)*f’(x)>0,则确定根在右区间[x,x2]内,将 x 设为该区间的左指针(x1=x),继续对右区 间进行对分; 上述对分过程一直进行到区间的间距满足精度要求为止(x2-x1<0.001)。此时确定 x1 为 f’(x)的根。由此得 出算法: 输入方程中各项的系数 a,b,c,d ; 3 2 b←b/a; c←c/a; d←d/a;a←1; {将方程变换为 x +b’*x +c’*x+d’=0 的形式} for x←-100 to 100 do {枚举每一个可能的根} begin x1←x;x2←x+1; {确定根的可能区间} if f(x1)=0 {若 x1 为根,则输出} then write(x1:0:2,’ ’) else if (f(x1)*f(x2)<0) {若根在区间[x1,x2]中} then begin while x2-x1>=0.001 do {若区间[x1,x2]不满足精度要求,则循环} begin xx←(x2+x1)/2; {计算区间[x1,x2]的中间位置} if f(x1)*f(xx)<=0 {若根在左区间,则调整右指针} then x2←xx else x1←xx; {若根在右区间,则调整左指针} end;{while} write(x1:0:2,’ ’); {区间[x1,x2]满足精度要求,确定 x1 为根} end;{then} end;{for} 其中 f(x)的函数说明如枚举法所示。


推荐相关:

一元三次方程的解法

4q -p);一元二次方程的一般解法在九世纪时,就由阿拉伯数学家花 拉子模求出来...【附录】一【一元三次方程解法】 51 1.解方程 x3=1。 ∵ x3-1=(...


一元三次方程的求根公式及其推导

2.求根公式的推导: ( 1) .实根式的推导: 一元三次方程求根公 式由演绎...余弦三倍角公式: cos 3? ? 4 cos3 ? ? 3 cos? , 若将 cos 3?看作...


一元二次方程综合训练题4

一元次方程综合训练题 4 1.已知 x 的方程 x +2(m+1)x+m +4=0 的...的一元次方程 x ( - 2k+3) x+k +3k+2=0 的两个实数根, 第三边长...


一元三次方程求根问题

? ? 3 27 3 4 27 108 以上只得出了一元三次方程一个根的求根公式,还不...科目三实际道路驾驶考试注意事项 驾考新题抢先版216份文档 2015全国两会专题 ...


简单一元三次方程解法_图文

暂无评价|0人阅读|0次下载|举报文档简单一元三次方程解法。综合除法 文档...一元三次方程的解法 4页 免费 一元三次方程及解法简介 2页 2下载券 一...


费拉里与一元四次方程的解法

的完全平方,即得到(4)式,再利用(5)式使(4)的右边 也成为完全平方,从而把一个一元次方程的求解问题化成了一个一元三次方程及两个一元二次方程 的求解...


高考中常用的一元三次方程的解法

高考中常用的一元三次方程的解法_数学_自然科学_专业资料。高考中常用的一元三...一元三次方程的解法详细 暂无评价 4页 1下载券 一元三次方程解法 7页 免费...


一元三次方程的解法

一元三次方程 ax 3 + bx 2 + cx + d = 0 的解法先把方程 ax 3 + ...得三个实根为 具体表示出来就为: , , , 其中 4 当 时,方程(2)有三个...


一元三次方程求根公式

浅谈一元三次方程求根公式—《数学文化》的读书报告 邹琼 机械设计制造及其自动化 2009-4 班,学号:2009302216 摘要:使方程两边左右相等的未知数叫做方程的解.一元...


一元四次方程求根公式

科目三实际道路驾驶考试注意事项 驾考新题抢先版文档贡献者 helloyup1010 贡献于...一元2、34次方程求根公... 3页 免费 一元次方程求根公式 暂无评价 3...

网站首页 | 网站地图
All rights reserved Powered by 简单学习网 www.tceic.com
copyright ©right 2010-2021。
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@126.com