C/Visual C - Quadratic equation

 
Vista:

Quadratic equation

Publicado por lis (4 intervenciones) el 27/02/2007 18:46:02
Hola,

tengo que hacer un programa en C que resuelva esta ecuacion: ax^2+bx+c. Tengo que crear una estructura con 2 floats, uno real y otro imaginario. MI duda creo q es mas de matematicas que de programacion, porque mi problema es que no recuerdo como resolver esa ecuacion con un numero real y otro imaginario.

Gracias,

Un saludo,

Lis
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Quadratic equation

Publicado por fernando.gomez (1603 intervenciones) el 27/02/2007 23:10:59
x = (-b +/- sqr(b^2 - 4ac)) / 2a.

Verifica que a != 0. Luego, para que sea imaginario el resultado, quiere decir que la raíz es negativa. Esto es, que b^2-4ac < 0. Pero para que esto pase, b^2 (que siempre es positiva) tiene que ser menor a 4ac. Entonces haces la validación y listo. Si es imaginario, quitas el número negativo y te acuerdas de que es imaginario y resuelves de forma normal.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Quadratic equation

Publicado por Lis (4 intervenciones) el 28/02/2007 09:46:29
Hola,

Gracias por tu ayuda pero no era exactamente lo que preguntaba, no me habre explikado bien proque lo que me has dicho es lo que sabia. A ver, yo tengo que crear una estructura con 2 numeros: float real y float imaginario, y lo que no se es que tegno que guardar en cada uno. Se supone que el resultado de la raiz cuadrada va en el float imaginario por si es negativo??? entonces el real que es? y que hago una vez tengo el numero real y el imaginario?

Gracias!

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Quadratic equation

Publicado por Nelek (816 intervenciones) el 28/02/2007 13:58:39
Hola

a ver si yo entiendo lo que quieres decir.

En primer lugar, una simple struct con un real y un imaginario no vas a poder usarlo, puesto que la solucion de la ecuacion de segundo grado es doble, a no ser que descompongas la solucion.

Si el resultado de (b^2-4ac) es positivo, esta claro que el valor de su raiz cuadrada la metes en el float normal.

Si el resultado de (b^2-4ac) es negativo, entonces no puedes hacer la raiz cuadrada. Por eso, lo que se hace es coger y descomponer la raiz en dos raices. Una la que lleva el (-1) y la otra la que lleva el valor absoluto de (b^2-4ac). A la raiz cuadrada de (-1) se la llama "i". Y el resultado de la ecuacion es el mismo (en valor absoluto) que con el signo cambiado, pero anyadiendo la "i" al final.

Ejemplo:
b = 2, a = 1, c = -2
la ecuacion quedaria:
x = (-2 +/- sqr(2^2 - 4*2*-2)) / 2*1. --> x = -2 +/- (sqr(20)/4)
sqr (20) / 4 = 1.118 que se guardaria en el float real porque es un numero "normal y corriente"

b = 2, a = 1, c = 2
la ecuacion quedaria:
x = (-2 +/- sqr(2^2 - 4*1*2)) / 2*1. --> x = -2 +/- (sqr(-4)/2)
sqr (-4) / 2 = sqr (4) / 2 * sqr(-1) = 2/2 * sqr (-1) = 1*i donde el "1" se guardaria en el float imaginario. Y asi sabrías que tienes un numero imaginario como solucion de la ecuacion, pero el valor numerico es exactamente el mismo que resolver la raiz cuadrada con el valor absoluto.

Una vez guardado asi... haces lo que debas

para guardarlo:

if ((b^2 - 4ac) >= 0)
{
real = sqr(b^2 - 4ac)) / 2a;
solucion1 = -b/2a + real;
solucion2 = -b/2a - real;
printf ("Las soluciones de la ecuacion son: Solucion1 = %f , Solucion 2 = %f", solucion1, solucion2);
}
else // Es decir ((b^2 - 4ac) < 0)
{
real = -b/2a;
imaginario = sqr(-1(b^2 - 4ac))) / 2a
printf ("Las soluciones de la ecuacion son: Solucion1 = %f + %f i, Solucion 2 = %f - %f i", real, imaginario, real, imaginario);
}


Espero haber contestado lo que preguntabas
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Quadratic equation

Publicado por Lis (4 intervenciones) el 28/02/2007 15:11:38
Muchas muchas gracias, lo he probado y si que funciona. Lo que no sabia era que el numero imaginario era cuando la raiz era negativa y como se resolvia.

Gracias,

Lis
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar