回 帖 发 新 帖 刷新版面

主题:这个程序为什么不能实现?

为求解一元二次方程,我编了如下程序
function f=f2(a,b,c)
if a=0
    if b=0
        if c=0
            f='any';
        else
            f='no solve';
        end
    else
        f=-c/b;
    end
else
    f=[(-b+sqrt(b^2-4*a*c)),(-b-sqrt(b^2-4*a*c))]
end
望高手指点迷津!

回复列表 (共5个回复)

沙发

都没判断b^2-4*a*c是否大于等于0

方程的根也不对吧

f='any';
f='no solve';

板凳

这里先不讨论判别式是否大于零,因为可以有复根。至于f='any'和f='no solve'是两种特殊情况,一个表示解任意,一个表示无解。顺便指出f可以等于字符串。

3 楼

[quote]这里先不讨论判别式是否大于零,因为可以有复根。至于f='any'和f='no solve'是两种特殊情况,一个表示解任意,一个表示无解。顺便指出f可以等于字符串。[/quote]


既然清楚,那把方程根的表达式改正的不就行了。

4 楼

function f=text2(a,b,c)
if a==0  %不是赋值号!
    if b==0
        if c==0
            f='any';
        else
            f='no solve';
        end
    else
        f=-c/b;
    end
else
    f=[(-b+sqrt(b^2-4*a*c)),(-b-sqrt(b^2-4*a*c))];
end
>> text2(1,2,3)

f =

  -2.0000 + 2.8284i  -2.0000 - 2.8284i

5 楼

多谢大家的帮忙!

我来回复

您尚未登录,请登录后再回复。点此登录或注册