Autor Tema: numeros complejos en C  (Leído 4006 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado jgpeiro06

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 276
numeros complejos en C
« en: 06 de Febrero de 2008, 18:06:52 »
Hola a todos, estoy realizando un pequeño simulador de circuitos, similar al PSPICE.
De momento he estado implementando las rutinas para el analisis en DC, y ahora quiero implementar el analisis AC.
El problema es que para los calculos necesito trabajar con numeros complejos y no se muy bien como se come eso en C.
El programa usa matrices matrices de datos tipo float, y ahora tengo que modificar esas matrices para que contengan datos del tipo a+bi, y de alguna manera crear funciones sumacompleja( complejo x, complejo y), pero no quiero tener que usar una funcion cada vez que tenga que sumar dos complejos, ya que esto hace que el codigo fuente sea menos "limpio".

Hasta ahora podia hacer:
matrix1[0][0] += matrix2[0][0];

pero para trabajar con complejos de momento estoy obligado a hacer algo como:
matrix1[0][0].real += matrix2[0][0].real;
matrix1[0][0].imag += matrix2[0][0].imag;
o
sumacompljeos( matrix1[0][0], matrix2[0][0] );

En C++ podria definir una clase y definir los operadores o algo asi, pero en C creo que no se puede...

Un saludo.

Os adjunto una foto con el programa simulando un circuito con un par de diodos y una fuente senoidal.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: numeros complejos en C
« Respuesta #1 en: 06 de Febrero de 2008, 19:17:59 »
Se supone que es para un PC y no para un micro o ¿no?

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado jgpeiro06

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 276
Re: numeros complejos en C
« Respuesta #2 en: 07 de Febrero de 2008, 09:45:32 »
No, el proyecto esta pensado para ejecutarse dentro de un PIC32. Estoy undo el entorno de desarrollo MPLAB IDE.
Aqui os dejo un pantallazo del programa despues de simular un circuito con un diodo.

Desconectado jgpeiro06

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 276
Re: numeros complejos en C
« Respuesta #3 en: 07 de Febrero de 2008, 09:47:55 »
Que tonto estoy, ya adjunte la imgen en el primer mensaje...

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: numeros complejos en C
« Respuesta #4 en: 07 de Febrero de 2008, 09:55:15 »
Joe, Jorge, tú siempre haciendo proyectos de la leche. ¿Ya terminaste el MP3?

Desconectado jgpeiro06

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 276
Re: numeros complejos en C
« Respuesta #5 en: 11 de Febrero de 2008, 09:41:09 »
uno de los inconvenientes que tiene proponerse proyectos grandes es que es mucho mas facil dejarlos a mitad de camino...Lo del MP3 lo he intentado en varias ocasiones, pero mi idea principal era que el algoritmo de decodificacion lo ejecutase el dsPIC y siempre ha dicho todo el mundo que no eran suficientemente podtentes. Encontre una pagina ( http://www.underbit.com/products/mad/ ) en la que habian implementado las rutinas para docodificar MP3 con numeros en coma fija, lo cual accelera mucho el proceso si tu CPU no incorpora FPU, pero creo que ni aun asi con los dsPIC era suficiente, quizas con los PIC32...
Sobre lo de los proyectos que se me quedan grandes, cada vez me voy concienciando a que uno no tiene porque hacer todo el trabajo, que no es "desleal" apoyarse en otros proyectos como librerias y demas. Para este proyecto implemente una libreria de matrices y despues tube que hacer que las matrices manejasen datos complejos y la verdad, cambiar tanto fue un coñazo. Encontre en internet dos librerias matematicas "Numerical Recipes" y "GNU Scientific Library", ambas con documentacion aunque solo he conseguido "incrustar" la primera en mi proyecto. De un dia para otro ya tengo implementadas muhcas funciones para trabajar con matrices, tambien para hacer derivadas y para resolver sistemas de ecuaciones ecuaciones diferenciales(creo que lo necesito para el analisis transitorio).

Por cierto GNU Scientific Library es gratuita y el codigo + documentacion se pueden bajar de http://www.gnu.org/software/gsl/ si alguien lo sabe "incrustar" para usar con el MPLAB que me avise. La libreria "Numerical Recipes" (codigo + doc) tb se puede descargar desde el emule(aunque solo para experimentar en casa).
PD nocturno, me llamo Jose ;-)

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: numeros complejos en C
« Respuesta #6 en: 11 de Febrero de 2008, 10:34:02 »
Bueno, a mí me pasa lo mismo pero con proyectos menos ambiciosos, así que no te sientas mal en absoluto  :D

Tomo nota de tu nombre.


 

anything