You are on page 1of 6

#include <iostream> 

#include <complex> 
 
int main() 

std::cout << "Programa de Resolución de Ecuaciones Algebraicas por radicales\n"; 
 
int tipo; 
std::cout << "Ingrese el grado de la ecuación: 1, primer grado; 2; 3; ó 4\n"; 
std::cin >> tipo; 
 
switch (tipo) 

case 1: 

std::cout << "a*x + b = (0, 0)\n"; 
std::cout << "Ingrese la constante \"a\"\n"; 
double re, im; 
std::cout << "Parte real de \"a\"\n"; 
std::cin >> re; 
std::cout << "Parte imaginaria de \"a\"\n"; 
std::cin >> im; 
std::complex < double >a(re, im); 
 
std::cout << "Ingrese la constante \"b\"\n"; 
std::cout << "Parte real de \"b\"\n"; 
std::cin >> re; 
std::cout << "Parte imaginaria de \"b\"\n"; 
std::cin >> im; 
std::complex < double >b(re, im); 
 
std::complex < double >x; 
x = ­b / a; 
std::cout << " La raiz de la ecuación es x = " << x << std::endl; 
break; 

case 2: 

std::cout << "a*x*x + b*x + c = (0, 0)\n"; 
std::cout << "Ingrese la constante \"a\"\n"; 
double re, im; 
std::cout << "Parte real de \"a\"\n"; 
std::cin >> re; 
std::cout << "Parte imaginaria de \"a\"\n"; 
std::cin >> im; 
std::complex < double >a(re, im); 
 
std::cout << "Ingrese la constante \"b\"\n"; 
std::cout << "Parte real de \"b\"\n"; 
std::cin >> re; 
std::cout << "Parte imaginaria de \"b\"\n"; 
std::cin >> im; 
std::complex < double >b(re, im); 
 
std::cout << "Ingrese la constante \"c\"\n"; 
std::cout << "Parte real de \"c\"\n"; 
std::cin >> re; 
std::cout << "Parte imaginaria de \"c\"\n"; 
std::cin >> im; 
std::complex < double >c(re, im); 
 
std::complex < double >x1; 
std::complex < double >x2; 
 
x1 = (­b + sqrt(b * b ­ 4.0 * a * c)) / (2.0 * a); 
 
x2 = (­b ­ sqrt(b * b ­ 4.0 * a * c)) / (2.0 * a); 
std::cout << " La raices de la ecuación son " << std::endl; 
std::cout << "{ " << x1 << ", " << x2 << " }\n"; 
break; 
 

case 3: 
 { 
   std::cout << "a*x*x*x + b*x*x+ c*x + d = (0, 0)\n"; 
std::cout << "Ingrese la constante \"a\"\n"; 
double re, im; 
std::cout << "Parte real de \"a\"\n"; 
std::cin >> re; 
std::cout << "Parte imaginaria de \"a\"\n"; 
std::cin >> im; 
std::complex < double >a(re, im); 
 
std::cout << "Ingrese la constante \"b\"\n"; 
std::cout << "Parte real de \"b\"\n"; 
std::cin >> re; 
std::cout << "Parte imaginaria de \"b\"\n"; 
std::cin >> im; 
std::complex < double >b(re, im); 
 
std::cout << "Ingrese la constante \"c\"\n"; 
std::cout << "Parte real de \"c\"\n"; 
std::cin >> re; 
std::cout << "Parte imaginaria de \"c\"\n"; 
std::cin >> im; 
std::complex < double >c(re, im); 
 
std::cout << "Ingrese la constante \"d\"\n"; 
std::cout << "Parte real de \"d\"\n"; 
std::cin >> re; 
std::cout << "Parte imaginaria de \"d\"\n"; 
std::cin >> im; 
std::complex < double >d(re, im); 
 
std::complex<double> p; 
std::complex < double> q; 
 
p = c / a ­ b*b / (3.0*a*a); 
q = b*b*b / (9.0*a*a*a) ­ b*b*b / (27.0*a*a*a) ­ b*c /(3.0*a*a) + d / a; 
 
std::complex < double >y1; 
 
std::complex<double> u; 
std::complex<double> v; 
u = pow(­q/2.0 + sqrt(q*q/4.0 + p*p*p/27.0), 1./3.); 
v = ­p/(3.*u); 
y1 = u + v; 
 
std::complex<double> y2; 
y2 = u*(std::complex<double>(­0.5, sqrt(3.)/2.)) + 
v*(std::complex<double>(­0.5, ­sqrt(3.)/2.)); 
 
std::complex<double> y3; 
y3 = u*(std::complex<double>(­0.5, ­sqrt(3.)/2.)) + 
v*(std::complex<double>(­0.5, sqrt(3.)/2.)); 
 
std::complex<double> x1; 
x1 = y1 ­ b / (3.*a); 
 
std::complex<double> x2; 
x2 = y2 ­ b / (3.*a); 
 
std::complex<double> x3; 
x3 = y3 ­ b / (3.*a);  
std::cout << " Las raices de la ecuación son:" << std::endl; 
std::cout << "{ " << x1 <<", " << x2 << ", " << x3 << " }\n"; 
break; 
 } 
case 4: 
 { 
     std::cout << "a0*x*x*x*x + a1*x*x*x+ a2*x*x + a3*x + a4 = (0, 0)\n"; 
std::cout << "Ingrese la constante \"a0\"\n"; 
double re, im; 
std::cout << "Parte real de \"a0\"\n"; 
std::cin >> re; 
std::cout << "Parte imaginaria de \"a0\"\n"; 
std::cin >> im; 
std::complex < double >a0(re, im); 
 
std::cout << "Ingrese la constante \"a1\"\n"; 
std::cout << "Parte real de \"a1\"\n"; 
std::cin >> re; 
std::cout << "Parte imaginaria de \"a1\"\n"; 
std::cin >> im; 
std::complex < double >a1(re, im); 
 
std::cout << "Ingrese la constante \"a2\"\n"; 
std::cout << "Parte real de \"a2\"\n"; 
std::cin >> re; 
std::cout << "Parte imaginaria de \"a2\"\n"; 
std::cin >> im; 
std::complex < double >a2(re, im); 
 
std::cout << "Ingrese la constante \"a3\"\n"; 
std::cout << "Parte real de \"a3\"\n"; 
std::cin >> re; 
std::cout << "Parte imaginaria de \"a3\"\n"; 
std::cin >> im; 
std::complex < double >a3(re, im); 
 
std::cout << "Ingrese la constante \"a4\"\n"; 
std::cout << "Parte real de \"a4\"\n"; 
std::cin >> re; 
std::cout << "Parte imaginaria de \"a4\"\n"; 
std::cin >> im; 
std::complex < double >a4(re, im); 
 
std::complex<double> a; 
a = a1 / a0; 
 
std::complex<double> b; 
b = a2 / a0; 
 
std::complex<double> c; 
c = a3 / a0; 
 
std::complex<double> d; 
d = a4 / a0; 
 
std::complex<double> p; 
std::complex < double> q; 
std::complex <double> r; 
 
p = ­3.*a*a/8. + b; 
 
q = a*a*a/8. ­ a*b/2. + c; 
 
r = ­3.*a*a*a*a/256. + a*a*b/16. ­ a*c/4. + d; 
 
std::complex<double> p1; 
std::complex<double> q1; 
 
p1 = ­p*p / 12. ­ r; 
 
q1 = 2.*p*p*p/27. + p*(4.*r ­ p*p)/12. ­ q*q / 8.; 
 
std::complex < double >alpha; 
 
std::complex<double> u; 
std::complex<double> v; 
u = pow(­q1/2.0 + sqrt(q1*q1/4.0 + p1*p1*p1/27.0), 1./3.); 
v = ­p1/(3.*u); 
alpha = u + v ­ p/3. ; 
 
std::complex<double> x0; 
x0 = (sqrt(2.*alpha) + sqrt(2.*alpha ­4.*(p/2. + alpha + 
q/(2.*sqrt(2.*alpha)))))/2. ­ a/4.; 
 
std::complex<double> x1; 
x1 = (sqrt(2.*alpha) ­ sqrt(2.*alpha ­4.*(p/2. + alpha + 
q/(2.*sqrt(2.*alpha)))))/2. ­ a/4.; 
 
std::complex<double> x2; 
x2 = (­sqrt(2.*alpha) + sqrt(2.*alpha ­4.*(p/2. + alpha ­ 
q/(2.*sqrt(2.*alpha)))))/2. ­ a/4.; 
 
std::complex<double> x3; 
x3 = (­sqrt(2.*alpha) ­ sqrt(2.*alpha ­4.*(p/2. + alpha ­ 
q/(2.*sqrt(2.*alpha)))))/2. ­ a/4.; 
 
std::cout << " Las raices de la ecuación son:" << std::endl; 
std::cout << "{ " << x0 <<", " << x1 << ", " << x2 << ", " << x3 << " }\n"; 
break; 
 } 
default : 
   break; 
  

 return 0;