主题:这个程序为什么不能实现?
hhddss
[专家分:10] 发布于 2007-06-12 17:26:00
为求解一元二次方程,我编了如下程序
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个回复)
沙发
fox000002 [专家分:860] 发布于 2007-06-12 18:08:00
都没判断b^2-4*a*c是否大于等于0
方程的根也不对吧
f='any';
f='no solve';
板凳
hhddss [专家分:10] 发布于 2007-06-12 21:58:00
这里先不讨论判别式是否大于零,因为可以有复根。至于f='any'和f='no solve'是两种特殊情况,一个表示解任意,一个表示无解。顺便指出f可以等于字符串。
3 楼
fox000002 [专家分:860] 发布于 2007-06-12 22:09:00
[quote]这里先不讨论判别式是否大于零,因为可以有复根。至于f='any'和f='no solve'是两种特殊情况,一个表示解任意,一个表示无解。顺便指出f可以等于字符串。[/quote]
既然清楚,那把方程根的表达式改正的不就行了。
4 楼
Guassfans [专家分:4090] 发布于 2007-06-12 22:12:00
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 楼
hhddss [专家分:10] 发布于 2007-06-13 13:31:00
多谢大家的帮忙!
我来回复