Apostar y ganar

Click Now!

sábado, 4 de mayo de 2013

Trabajar con numeros complejos programa en c gratis todocodigos


Numeros complejos programa en c para trabajar con numeros


#if !defined( __COMPLEJO_H )
#include "complejo.h"
#endif

#include <dos.h> //para MK_FP y pokeb
#include <mem.h> //para memset
#include <stdio.h>
#include <iostream>
#include <stdlib.h>//Libreria para usar la funcion al final del codigo system();
#include <fstream
#include conio.h
#include <fstream>
#include <windows.h>                  
#include <time.h>
#include <math.h>


class CFractal{
 private:
  unsigned char *Video;
 public:
   CFractal();
  ~CFractal(){ }
   void InitMode13h();
   void CloseMode13h();
   void Cleardevice();
   void PutPixel(int x,int y,unsigned char color);
   void Mandelbrot();
};
CFractal::CFractal()
{
 Video=(unsigned char*)MK_FP(0xA000,0x0000);
}

void CFractal::InitMode13h()
{
  asm{
   mov ah,0
   mov al,0x13
   int 0x10
  }
}

void CFractal::CloseMode13h()
{
 asm{
  mov ah,0
  mov al,0x03
  int 0x10
 }
}

void CFractal::PutPixel(int x,int y,unsigned char color)
{
  pokeb(0xA000,y*320+x,color);
}

void CFractal::Cleardevice(void)
{
  memset(Video,0,64000);
}

void CFractal::Mandelbrot(void)
{
  //coordenadas del plando complejo
  double REALMIN=-2,REALMAX=1,IMAGMIN=-1.2,IMAGMAX=1.2;
  double DIVERGE=4;   //valor de divergencia
  const double MAX=256; //iteracion maxima
  int Contador;                              //Col  Ren
  InitMode13h();  //iniciamos el modo grafico 13h (320*200) con 256 colores
  Cleardevice(); //limpiamos la pantalla
  //proceso que dibuja el fractal
 for(int i=0;i<320;i++)
for(int j=0;j<200;j++){
//asignamos a C las coordenadas del plano complejo
Complejo C((REALMAX-REALMIN)/320*i+REALMIN,
IMAGMAX-(IMAGMAX-IMAGMIN)/200*j);
Contador=0; //inicializamos el contador
Complejo Z(0,0);//iniciamos Z=0+0i
do{
  Z=Z*Z+C;//ecuacion Z=Zý+C
  Contador++;//incrementamos el contador
  if(Norm(Z)>DIVERGE)break;
}while(Contador<MAX);
  if(Contador!=MAX)
PutPixel(i,j,Contador+40);
}
  getch();
  CloseMode13h();
  gotoxy(31,8);
  cout <<"<< Fin del demo >>";
  gotoxy(26,10);
  cout <<"<< Fractal de Mandelbrot >>";
  getch();
}


int main(void)
{
 Complejo s,r,m,d;
 float a_im,a_re,b_im,b_re;
 system("cls");
 gotoxy(15,2);
 cout<<" Programa de demostracion para la Clase Complejo.";
 gotoxy(27,4);
 cout<<" Operaciones Basicas.";
 gotoxy(27,6);
 cout<<" Suma. ";
 gotoxy(27,7);
 cout<<" Resta. ";
 gotoxy(27,8);
 cout<<" Multiplicacion. ";
 gotoxy(27,9);
 cout<<" Division. ";

 cout<<endl;
 cout<<"\nPrimer numero real: ";     cin>>a_re;
 cout<<"Primer numero imaginario: "; cin>>a_im;
 Complejo a(a_re,a_im);
 cout<<a;
 cout<<"\n\nSegundo numero real: ";   cin>>b_re;
 cout<<"Segundo numero imaginario: "; cin>>b_im;
 Complejo b(b_re,b_im);
 cout<<b;

 s=a+b;
 cout<<"\n\nLa suma de estos dos numeros complejos es: ";
 cout<<s;

 r=a-b;
 cout<<"\nLa resta de estos dos numero complejos es: ";
 cout<<r;

 m=MulComplejo(a,b);
 cout<<"\nLa multiplicacion de estos dos numero complejos es: ";
 cout<<m;

 d=a/b;
 cout<<"\nLa division de estos dos numero complejos es: ";
 cout<<d;
 getch();

 system("cls");
 Complejo raiz,conj,_abs,mod,rec,inv,NORM;


 gotoxy(15,2);
 cout<<" Programa de demostracion para la Clase Complejo.";
 gotoxy(27,4);
 cout<<" Operaciones Basicas.";
 gotoxy(27,6);
 cout<<" Raiz. ";
 gotoxy(27,7);
 cout<<" Conjugado. ";
 gotoxy(27,8);
 cout<<" Valor Absoluto. ";
 gotoxy(27,9);
 cout<<" Modulo. ";
 gotoxy(27,10);
 cout<<" Inverso. ";

 cout<<endl;
 cout<<"\nIntroduzca un numero real: ";    cin>>a_re;
 cout<<"Introduza un numero imaginario: "; cin>>a_im;
 Complejo z(a_re,a_im);
 cout<<z;

 NORM=Norm(z);
 cout<<endl;
 cout<<"\nLa norma es: ";
 cout<<NORM;

 raiz=RaizComplejo(z);
 cout<<"\nLa raiz es: ";
 cout<<raiz;

 conj=ConjugadoComplejo(z);
 cout<<"\nSu conjugado es: ";
 cout<<conj;

 _abs=AbsComplejo(z);
 cout<<"\nSu valor absoluto: ";
 cout<<_abs;

 mod=Modulo(z);
 cout<<"\nSu Modulo es: ";
 cout<<mod;

 inv=InvComplejo(z);
 cout<<"\nSu inverso es: ";
 cout<<inv;
 getch();

 system("cls");
 gotoxy(15,2);
 cout<<" Programa de demostracion para la Clase Complejo.";
 gotoxy(27,4);
 cout<<" Operaciones Basicas.";
 gotoxy(27,6);
 cout<<" Forma Rectangular. ";
 gotoxy(27,7);
 cout<<" Forma Polar. ";

 rec=Rectangular(2.0,20.0);
 cout<<endl;
 cout<<"\nEn su Forma Rectangular ";
 cout<<"\nde r=2.0 y de ang=20.0 es: ";
 cout<<rec;

 Complejo pol;
 Complejo Z(4,-5);
 cout<<endl;
 cout<<"\nEn su Forma Polar "
<<"de 4-5i es: ";
 pol.Polar(Z);

 const int NUMEL=5;
 Complejo nums[NUMEL]={1,2,3,4,6};
 Complejo norm;
 norm=Norma(nums,5);
 cout<<"La norma del vector 1,2,3,4,6 es: ";
 cout<<norm;
 getch();
 CFractal Fract;
 system("cls");
 cout<<endl;
 cout<<endl;
 cout<<endl;
 cout<<endl;
 cout<<endl;
 cout<<"\n\n\n\nQue mejor que terminar este demo de los"
<<" numeros complejos con aplicacion de"
<<"\nestos mismos. Se trata de un fractal"
<<" denominado conjunto de mandelbrot que"
<<"\nutiliza la siguiente formula Z = Zý * C"
<<" donde Z y C son numeros complejos en"
<<"\nnuestro caso tenemos Z=Z+Zi y C = C+Ci"
<<" la condicion inicial es Z=0+0i y a C "
<<"\nse asignan todos los puntos del plano"
<<" complejo.";
  getch();
  Fract.Mandelbrot();
  return 0;
}


Codigos