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


赞助商链接
推荐相关:


一元三次方程的解法

1494 年,意大利帕乔利在其一部著作中甚 至指出,若干三次和次方程的求解象化...【附录】一【一元三次方程的解法】 51 1.解方程 x3=1。 ∵ x3-1=(...


一元三次方程的解法

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


一元三次方程的盛金公式解题法

教学重点: 1、一元三次方程的重根判别式及个盛金公式 2、盛金公式法及盛金定理 3、用盛金公式公式求一元三次方程的解 教学难点: 用判别式的值来选择...


一元三次方程

一元三次方程、一元次方程、一元五次以上方程一元三次方程求根公式: 以下是传统解法 一元二次 ax^2 +bx+c=0 可用求根公式 x= 求解,它是由方程系数直接...


一元三次方程及解法简介

【盛金公式】 一元三次方程 ax + bx + cx + ...盛金定理 4:当 A=0 时,若 B≠0,则必定有Δ>...双方各出三十个三次方程的问题,约定谁解出的题目...


一元三次方程的盛金公式解题法

一元三次方程求根公式 4页 免费 公式法解一元方程教案 4页 免费喜欢...​运​用​盛​金​公​式​解​题​具​有​简​明...


一元三次方程

一元三次方程的盛金公式解... 4页 免费 一元三次方程的解法 4页 免费 关于...有人听了不服气,来找他较量,每人各出 30 道题,由对方去解.结果,塔尔 ...


1312 一元三次方程求解【NOIP2001提高组】 1313 数的划...

1312 一元三次方程求解【NOIP2001提高组】 1313 数...2014造价工程师各科目冲刺试题及答案116份文档 2014...一元三次方程的解法 4页 免费 一元三次方程的求根...


一元三次方程求根公式

卡尔丹判别法 根与系数的关系 一个三次方求根计算方法 一元三次方程置换群解法...盛金定理 4:当 A=0 时,若 B≠0,则必定有 Δ >0(此时,适用盛金公 式...


一元三次方程的解

一元三次方程的解_语文_高中教育_教育专区。23.2...( x ? ___) 2 ; 2 (4) x2 ? 6 2x ? ...全国计算机等级考试一级练习题 公共基础知识辅导 全国...

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