1.题目
精确计算所有情况下的二次方程的根,包括 的情况。计算二次根有两种公式,可总结为
如果b>0,则
如果b<0,则
由此,构造matlab程序。
算法:
(1)输入a,b,c,判断是否存在a=0且b=0,此时有无限根,否则进入第二步。
(2)判断是否存在a=0,此时为一元一次方程,输出根,否则进行第三步。
(3)判断是否存在 ,此时无根,否则进入第四步。
(4)判断b与0的大小关系,根据公式,返回输出根的结果。
2.代码
function [x1,x2]=input(a,b,c)
if a==0&&b==0
disp('有无限个根');
return
end
if a==0
x1=-c/b;
x2=-c/b;
else
if (b*b-4*a*c)<0
disp('没有根');
else if b>0
x1=(-2*c)/(b+sqrt(b*b-4*a*c));
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
else
x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-2*c)/(b-sqrt(b*b-4*a*c));
end
end
end
3.测试
分别就b>0和b<0做测试
① ②