早教吧 育儿知识 作业答案 考试题库 百科 知识分享

pascal:枚举法解一元三次方程,求解析有形如:ax3+bx2+cx+d=0这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d均为实数),并约定该方程存在三个不同实根(根的范围在-100至100

题目详情
pascal:枚举法解一元三次方程,求解析
有形如:ax3 +bx2 +cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值>=1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。提示:记方程f(x)=0,若存在2个数x1和x2,且x1
▼优质解答
答案和解析
建议你用分治。将(x1,x2)分别代入式子f(x)=ax3 +bx2 +cx+d,然后代入(x1+x2) div 2,如果f((x1+x2) div 2)<0就二分:x1:=(x1+x2) div 2+x2,否则:x2:=(x1+x2) div 2+x2,然后代入(x1,x2)div 2,依次类推直到
x1,x2的差在允许范围内
枚举的话不太快,我们可以把根的值域扩大100倍,依次枚举该区间内的每个整数值
for i:=x1*100 to x2*100 do
begin
t:=i/100;
代入f(t);
判断f(t)与0的差,如果小于0.01 就是一个解。
end.
好了两种方法都给了,望采纳。
同学OI,求加qq:1525366793,我们一起学习!