Effacer les filtres
Effacer les filtres

How to keep my complex root answers un-simplified?

1 vue (au cours des 30 derniers jours)
Aaron
Aaron le 28 Juin 2012
I've created a formula to calculate complex roots in editor and have the following:
a=input('Enter the value for a: ');
b=input('Enter the value for b: ');
c=input('Enter the value for c: ');
if b^2 > 4*a*c
root_1=(-b+sqrt(b^2-4*a*c))/2*a;
root_2=(-b-sqrt(b^2-4*a*c))/2*a;
fprintf('\n')
disp('Roots are real and distinct:')
fprintf(1,'Root1= %0.0f \n',root_1);
fprintf(1,'Root2= %0.0f \n',root_2);
elseif b^2 == 4*a*c
root_1=-b/(2*a);
root_2=-b/(2*a);
fprintf('\n')
disp('Roots are repeated:')
fprintf(1,'Root1=Root2= %0.0f \n',root_1);
elseif b^2 < 4*a*c
root_1=(-b/2*a)+(sqrt(4*a*c-b^2)/2*a);
root_2=(-b/2*a)-(sqrt(4*a*c-b^2)/2*a);
fprintf('\n')
disp('Roots are complex:')
fprintf(1,'Root1= %0.0f \n',root_1);
fprintf(1,'Root2= %0.0f \n',root_2);
end
So far everything works fine but I don't want the last "elseif" command to simplify the imaginary equation.
For instance if my (a,b,c) are (1,8,25), respectfully, the answer that I would like to have is:
Root1= -4+3i
Root2= -4-3i
How do I keep it this way or at least have the "i"?

Réponse acceptée

Walter Roberson
Walter Roberson le 28 Juin 2012
fprintf(1,'Root1= %0.0f%+0.0fi\n', real(root_1), imag(root_1));
  9 commentaires
Tom
Tom le 28 Juin 2012
It might be worth checking it with a known solution (e.g. http://www.mathgoodies.com/calculators/quadratic_equations.html)- try for example a=3,b=4,c=1
Aaron
Aaron le 28 Juin 2012
Modifié(e) : Aaron le 28 Juin 2012
Sonovagun!! I should have caught that. Thank you.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements 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