Lenguaje C buscando un programa
No entiendo la fórmula específica....
#include
#include
#include
#define KE 200
main()
{
flotador ex[ KE], hy[KE],dx[KE],ix[KE];
float ga[KE],gb[KE]
float ex_low_m1=0, ex_low_m2= 0, ex_high_m1 =0, ex_high_m2=0;
int n,k,kc,ke,NSTEPS, kstart
float ddx,dt,epsz,epsilon,sigma,eaf, freq_in,pi ,arg;
float T,t0,spread,pulse;
ARCHIVO *fp
// ARCHIVO *fopen(); el programa tiene esto, Error, debe eliminarse
/*printf("input freq(MHz):"
scanf("%f",&freq
freq=freq*1e6;*/
//Constantes de inicialización
ddx = 0.01
dt = ddx/(2*3e8) ;
kc=KE/2;
pi=3.14159;
epsz=8.85419e-12; espacio libre*/
for(k=0;k //Solicitar no conductividad de entrada printf("inicio dieléctrico en -->"); scanf("%d",&kstart //Solicitud de épsilon printf); ("epsilon - >"); scanf("%f",&epsilon //Solicitud de conductividad de entrada printf("conductividad); -->") ; scanf("%f",&sigma); printf("Kstart,epsilon,sigma:%d,%6.2f,%6.2f \ n",kstart, épsilon,sigma); /* eaf=dt*sigma/(2*epsz*epsilon); printf("eaf:%6.4f \n ",eaf); */ //Rellena ga,gb según la fórmula for(k=kstart;k<=KE;k++) { ga[k]=1./(1.+epsilon+sigma*dt/epsz gb[k]=sigma*dt/epsz } //Salida ga,gb for(k=0;k<=KE;k++) //Inicializar todo espacios a 0 for(k=0;k { ex[k]=0; hy[k]=0;dx[k]=0;ix[k]=0; } /*estos parámetros especifican el pulso de entrada*/ //Parámetros de inicialización t0=50.0; spread =20.0 T=0; ; //Continúa calculando si ingresas un número positivo, de lo contrario saldra while(NSTEPS>0) { printf (" NSTEPS--->"); scanf("%d",&NSTEPS printf("%d\n",NSTEPS); //Si ingresa un número no positivo aquí, aún se ejecutará. Si necesita salir, agregue el siguiente código // if (NSTEPS <= 0) break; // bucle de tiempos NSTEPS for(n=1;n<=NSTEPS;n++) { T=T+ 1; /*bucle fdtd principal*/ /*calcular el campo dx*/ //Completar dx según la fórmula for(k=0;k { dx[k]=dx[k]+0.5*(hy[k-1]- hy[k]); } /* poner pulso gaussiano en el extremo inferior */ freq_in=3e8; pulso=exp(-0.5*(pow( (t0-T )/spread,2.0)) /*pulse=sin(2*pi*freq*dt*T);*/ dx[kc]=dx[kc ]+pulso; //Salida printf("n=%d,T=%d,pulse= %6.2f\n",n,T,pulso); printf("n=%d,dx[kc]=%6.2f\n",n,dx[kc]); /*ex campo*/ p> //Rellena ex, ix según la fórmula for(k=1;k { ex [k]=ga[k]*(dx[k]-ix[k]); [k]=ix[k]+gb[k]*ex[k]; p> } /* condiciones de contorno absorbentes*/ ex[0]= ex_low_m2 ex_low_m2= ex_low_m1; ex_low_m1=ex[1] ex[KE-1]= ex_high_m2; ; ex_high_m2= ex_high_m1; ex_high_m1=ex[KE-2 ] //Completar hy según la fórmula for(k=1;k } /* fin del fdtd principal lo op*/ /*imprime los campos ex y hy*/ for(k=1;k<=KE;k++) printf(" %3d %6.2f %6.2f\n",k,ex[k],hy[k]); /*imprime los campos ex y hy en archivos*/ //Salida ex al archivo ex2.1 fp=fopen("ex2.1","w"); for(k=1;k<=KE; k++) fprintf(fp," %6.2f\n",ex[k]); fclose(fp); //Salida hy Para presentar hy2.1 fp=fopen("hy2.1","w"); for(k=1;k<=KE;k++) fprintf(fp," %6.2f\n",hy[k]); fclose(fp); printf("T=%5.0f\ n",T); } }