need help Writing a function that returns roots of a quadratic
4 次查看(过去 30 天)
显示 更早的评论
This is my plan on how to write it (don't have software at my disposal currently). I am learning matlab so understand there may be quite a few problems.
Function [x]=myquad(a,b,c)
x=[r1 r2];
d=sqrt((b.^2)-4.*a.*c)
if a==0 & b>0
r1=-c/b;
elseif a==0 & b==0
r1=0;
elseif a~=0 & d==0
r1=-b./(2.*a);r2=r1;
elseif a~=0 & d>0
r1=(-b+d)./2a; r2=(-b+d)./2.*a;
elseif a~=0 & d<0
r1=(-b+d.*i)/2a; r2=(-b-d.*i)./2.*a;
end
end
I need to follow this algorithm for an assignment.
THANKS!
0 个评论
采纳的回答
Walter Roberson
2013-2-17
编辑:Walter Roberson
2013-2-17
Your first two cases do not appear to set r2 to anything.
your a=0 b=0 case is wrong
Your "di" should probably be "d*i"
更多回答(2 个)
Azzi Abdelmalek
2013-2-17
There are some mistakes
if a==0 %instead of if a=0
elseif % instead of ifelse
1 个评论
Walter Roberson
2013-2-17
Multiple assignment is not permitted. r1=r2=VALUE is not allowed. Use r1=VALUE; r2=r1
Image Analyst
2013-2-18
Why do you need all those "if"s at all? Why not just do
function [r1 r2]=myquad(a,b,c)
d = sqrt((b^2)-4*a*c); % Can be complex with no problem.
r1=(-b-d)/(2*a);
r2=(-b+d)/(2*a);
MATLAB handles complex numbers and infinite numbers with no problem, so you don't need special if statements to do it manually.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!