matlab函数调用的问题

这是一个求一元二次等式的解的函数functioncal_roots(a,b,c)%cal_rootssolvesaquadraticfunctionax^2+bx+c=0... 这是一个求一元二次等式的解的函数
function 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 == 0elseif abs(b^2-4*a*c)<1e-10 x = -b/(2*a);else x1 = (-b+sqrt(b^2-4*a*c))/(2*a); x2 = (-b-sqrt(b^2-4*a*c))/(2*a);end;比如说我要求这个方程的根

要在命令行输入什么才能求出这个跟来?因为那个函数返回解的个数是不确定的,所以要怎么处理?
谢谢!
展开
 我来答
tianxiawulang
推荐于2016-09-01 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2651万
展开全部

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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式