1、一般情况下,函数应该返回参数(现在的函数没返回参数);2、返回的参数可以是向量,所以,无论是否重根,都可以按照一个向量返回. 帮你简单改了一下:function x = cal_roots(a,b,c)
%cal_roots solves aquadratic function ax^2+bx+c = 0
if a==0
error('a = 0 -- Not a quadratic equation');
% b^2-4*a*c == 0
elseif abs(b^2-4*a*c)<1e-10
x = -b/(2*a);
x = [x;x];
else
x1 = (-b+sqrt(b^2-4*a*c))/(2*a);
x2 = (-b-sqrt(b^2-4*a*c))/(2*a);
x = [x1; x2];
end;命令行下调用:>> cal_roots(1,5,6)
ans =
-2
-3
>> cal_roots(1,4,20)
ans =
-2.0000 + 4.0000i
-2.0000 - 4.0000i
