• Domingo 15 de Diciembre de 2024, 00:35

Autor Tema:  Números Imaginarios  (Leído 2351 veces)

Liwk

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Números Imaginarios
« en: Viernes 7 de Marzo de 2008, 07:27 »
0
Hola.
Estoy haciendo un programa para calcular raíces en el que se emplea álgebra con números imaginarios. Pero no sé exactamente cómo manejarlos en C++, sin obtener un #NANO. O algo por el estilo.
Estuve revisando en Internet y en How to Program de Deitel pero no puedo resolverlo aún. Si pudieran sugerirme un sitio de consulta o darme algunos tips para manjearlos sería incréible.
Gracias.

carmamezo

  • Miembro MUY activo
  • ***
  • Mensajes: 232
    • Ver Perfil
Re: Números Imaginarios
« Respuesta #1 en: Lunes 17 de Marzo de 2008, 13:29 »
0
Hola,
por qué no creas una estructura llamada numero imaginario que contenga la parte real y la parte imaginaria?
Código: Text
  1.  
  2. typedef struct numero_imag
  3. {
  4. double parte_real;
  5. double parte_imag;
  6. double mod;
  7. double arg;
  8. }st_numero_imag;
  9.  
  10.  
y a partir de ahí la cosa es sencilla...
Sumar dos números:
Código: Text
  1.  
  2. st_numero_imag num1,num2,res;
  3.  
  4. res.parte_real=num1.parte_real+num2.parte_real;
  5. res.parte_imag=num1.parte_imag+num2.parte_imag;
  6. res.mod=sqrt(pow(res.parte_real,2)+pow(res.parte_imag,2));
  7. res.arg=atan(res.parte_imag/res.parte_real);
  8.  
  9.  
Como verás he introducido en la estructura el formato módulo y exponente que
facilita las operaciones de multiplicación y división.
Dentro de la librería math.h de microsoft (MSDN) puedes encontrar la estructura _complex y alguna otra función para operar con estos números (siempre y cuando uses el visual studio de microsoft)...

Si programas en C++ puedes crear una clase con bastante potencia que haga todo lo anterior y mucho más, automáticamente (sobrecargando los operadores)...   Supongo que incluso encuentres alguna clase que lo haga por ti (como la clase complex de microsoft)

El resto corre de tu parte...

Un saludo.
 :lightsabre:
No hay tonto más molesto que el ingenioso.