need help Writing a function that returns roots of a quadratic
1 次查看(过去 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.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Get Started with Optimization Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!