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)的函数说明如枚举法所示。



推荐相关:

盛金公式与费拉里公式解四次方程之特点

从费拉里公式可见,解一元次方程的最关键问题是解一元三次方程. 虽然可以用...应届生求职季宝典 英文个人简历模板 创意简历模板汇集 推理型题分析与总结文档...


一元三次方程与一元四次方程的根

3.6 一元三次方程与一元次方程的根 3.6.1 一元三次方程的根 一元二次方程的求根公式是众所周知的, 下面我们给出一元三次与一元次方程的求根 公式. ...


中考数学压轴试题复习专题四 因动点产生的平行四边形问题

? . ? ? 2 2 4 2 4 ? 3 ? 2 这两个方程整理以后都是一元三次方程 4x3-28x2+53x-20=0,这个方程对于初中毕 业的水平是不好解的. 5 1 事实上...


...到“科学“-科学技术简史》期末试题及答案

尔雅选修课《从“愚昧”到“科学“-科学技术简史》期末试题及答案 一、单选题 ...10 卡丹从塔塔里亚那里学到了三次方程的解法,之后又研究出了次方程的解法...


2007年第4届中国东南数学奥林匹克试题及答案

2007年第4届中国东南数学奥林匹克试题及答案_学科竞赛...的个数,使得对于每个 a,关于 x 的三次方程 x3 ...【另解】 x3 ? 1 对任意 | x |? 998 ,x ...


2011中考数学专题:例+练——第4课时 阅读理解题(含答案...

类型之一 考查掌握新知识能力的阅读理解题 命题者...且三次方程 x 3 + px 2 + qx + m = 0 有...2 x 2 ? 4 x + 3 = 0 是否有整数解?若有...

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