二分迭代法解一元二次方程_一元二次方程之特殊解
二分迭代法解一元二次方程由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“一元二次方程之特殊解”。
作业题目:用二分迭代法求一元二次方程的根
班级:
姓名:
完成时间: 内容:
1.问题分析:
从对象到类:二次幂的未知系数为a,一次幂的未知系数为b,未知常数为c, 区间参数为x1,x2,区间中点为x3.数据分析: 所有都是实数所以用double的类型.方法分析: 构造办法,通过参数设置初始化二次幂的系数,一次幂的系数,常数
改变二次幂的系数.改变一次幂的系数.改变常数.2.模型(UML)如图1所示
图1 3.代码设计
public cla Equation{
double a,b,c;double x,x1,x2,x3;public Equation(double a,double b,double c){
} private double delta(){ return b*b-4*a*c;} this.a=a;this.b=b;this.c=c;public void calculate(){ if(delta()
System.out.print(“无根n”);else if(delta()==0)
System.out.print(“根为”+(-b/(2.0*a))+“n”);else
{
x1=-1000;x2=-b/(2.0*a);x3=(x1+x2)/2.0;while(Math.abs(x1-x2)>0.000001){ if(f(x1)*f(x3)
}
else if(f(x3)*f(x2)
} } System.out.print(“一根为:”+x3+“n”);
x1=-b/(2.0*a);x2=+1000;x3=(x1+x2)/2.0;x1=x3;x3=(x1+x2)/2;x2=x3;x3=(x1+x2)/2;
while(Math.abs(x1-x2)>0.000001){ if(f(x1)*f(x3)
}
else if(f(x3)*f(x2)
}
} System.out.print(“一根为:”+x3+“n”);} } x1=x3;x3=(x1+x2)/2;x2=x3;x3=(x1+x2)/2;double f(double x){ return a*x*x+b*x+c;}
4.测试用例设计 a=10,b=433,c=10 5.测试方法设计
public static void main(String[] args){
} Equation e=new Equation(10,433,10);e.calculate();}
6.测试过程
测试环境如下图2
图2
测试结果如下图3所示:
图3
结果分析: 结果如实.7.作业讨论
遇到的问题:导出方程,连贯二分法和迭代法总想不懂,在书上和网上查有关资料分析都没看懂,请教同学,一边编写,一边修改,问题实在太多了,同一个问题改了多次才修改成功.解决方法:请教同学和查询网上的例子.8.心得体会:一道简单的数学题用这么复杂的算法实在违反了效率的要求,虽然很繁琐,但使我有学会了一些其他编程方法.9.给老师的建议
请不要一次性布置太多作业,像上次课那样分流的布置,这样没那么混淆,而且我放假回家没有电脑,做作业不方便.