Résoudre des Équation du second degré dans C++

Je suis en train d'écrire une fonction en C++ qui permet de résoudre pour X à l'aide de l'équation quadratique. C'est ce que j'ai écrit au départ, ce qui semble à travailler aussi longtemps qu'il n'y a pas de nombres complexes pour une réponse:

float solution1 = (float)(-1.0 * b) + (sqrt((b * b) - (4 * a * c)));
solution1 = solution1 / (2*a);

cout << "Solution 1: " << solution1 << endl;

float solution2 = (float)(-b) - (sqrt((b*b) - (4 * a * c)));
solution2 = solution2 / (2*a);
cout << "Solution 2: " << solution2;

Si, par exemple, j'utilise l'équation: x^2 - x - 6, j'obtiens la solution 3, -2 correctement.

Ma question est comment pourrais-je le compte pour les nombres complexes....par exemple, étant donné l'équation:

x^2 + 2x + 5

De problèmes par la main, je voudrais obtenir -1 + 2i -1 - 2i.

Bien, je suppose que deux question, puis-je écrit de mieux, et de rendre compte pour le nombre complexe?

Merci pour toute aide!

  • L'autre gars a fourni les bonnes réponses, donc pas de raison pour moi d'essayer et d'audace eux 😉 Cependant, si vous voulez une solution générale à l'équation ax^2+bx+c=0, rappelez-vous que a==0 doit être une valeur valide. Cela aurait pour conséquence une division de zéro, alors vous devez prendre soin de ce cas séparément. Dans ce cas, cela signifierait que vous êtes de gauche avec une équation linéaire avec une seule racine. Cheers !
  • Vous impliquer que vous êtes préoccupé par des racines complexes, mais ce que sur la complexité des coefficients dans l'équation d'origine?
  • Coefficients complexes nécessite une autre approche complètement. Donc, ça va être la question suivante 🙂 scurrs éteint et se prépare une réponse avant de la main
InformationsquelleAutor | 2009-05-22