need help Writing a function that returns roots of a quadratic

2 vues (au cours des 30 derniers jours)
steve guy
steve guy le 17 Fév 2013
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!

Réponse acceptée

Walter Roberson
Walter Roberson le 17 Fév 2013
Modifié(e) : Walter Roberson le 17 Fév 2013
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"
  6 commentaires
steve guy
steve guy le 17 Fév 2013
then that means my "d=0" should also be "d==0" in the code as well, right?
Azzi Abdelmalek
Azzi Abdelmalek le 17 Fév 2013
Yes

Connectez-vous pour commenter.

Plus de réponses (2)

Azzi Abdelmalek
Azzi Abdelmalek le 17 Fév 2013
There are some mistakes
if a==0 %instead of if a=0
elseif % instead of ifelse
  1 commentaire
Walter Roberson
Walter Roberson le 17 Fév 2013
Multiple assignment is not permitted. r1=r2=VALUE is not allowed. Use r1=VALUE; r2=r1

Connectez-vous pour commenter.


Image Analyst
Image Analyst le 18 Fév 2013
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.
  2 commentaires
steve guy
steve guy le 18 Fév 2013
Probably would make more sense to do that but I have to address all the different cases for an assignment. For instance if a user entered myquad(0,1,2) then I need it to say. "Not a quadratic, r1=-1/2".
do you think I could just write fprintf statements underneath the logical expressions for the different cases, in place of the formulas, and use what you suggested?
Image Analyst
Image Analyst le 18 Fév 2013
Sure.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Get Started with Optimization Toolbox dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by