Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: fernando27 en 29 Noviembre 2015, 02:58 am



Título: problemas en el caso 2
Publicado por: fernando27 en 29 Noviembre 2015, 02:58 am
buenas, alguien podria ayudarme a solucionar un inconveniente que tengo al momento de querer obtener los valores del caso 2(los del caso 1 si se obtienen). el problema se puede ejecutar... gracias...
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#define Pi 3.141592653589
using namespace  std;
///funcion u(x,t) aproximada
long double U(double x, double t)
{
long double z; int i;
z=0;
for (i=1;i<20;i++)
z = z+2/(Pi*Pi)*1/(i*i)*(4*sin(Pi*i/2)+i*Pi*(1-cos(i*Pi)))*sin(i*Pi*x)*exp(-Pi*Pi*t*i*i);
return(z);} ///////fin funcion aproximada
int main ()
{  int opc;
    float y,q;
do { system("cls");
    cout<<"menu\n";
    cout<<"1. Metodo Explicito\n";
    cout<<"2. MEtodo Implicito\n";
    cout<<"\t\t elija su opcion:";
    cin>> opc;
switch(opc)
{case 1:{system("cls");
        cout<<"Metodo Explicito\n";
        cout<<"\t\t digite un valor para r :";
        cin>>y;
        FILE *f;
f=fopen ("explicito020.txt","w+");
int i,j,N,T,l,c;
float s1,s2,s3,r,h,k,x,t,error,diferencia;
float zz;
float u[11][101];
r=y;
h=0.1;
k=r*h*h;
N=10;
T=50;
fprintf(f,"r=%4.2f,h=%4.2f,k=%6.4f \n ",r,h,k);
fprintf(f,"i j x t U[xi,yj] U[x,y] diferencia error \n ");
printf("i j x t U[xi,yj] U[x,y] diferencia error \n ");
for (l=0;l<=N+1;l++) //valores de U con las condiciones iniciales{
x=l*h;
if ((x>=0 ) & (x<= 0.5)){
u[l][0]=2*x+1;
fprintf(f,"%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n ",l,0,x,0.0,u[l][0],u[l][0],0.0,0.0);
printf("%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",l,0,x,0.0,u[l][0],u[l][0],0.0,0.0);
}//fin del if
if ((x>0.5 ) & (x<=1)){
u[l][0]=3-2*x;
fprintf(f,"%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n ",l,0,x,0.0,u[l][0],u[l][0],0.0,0.0);
printf("%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",l,0,x,0.0,u[l][0],u[l][0],0.0,0.0);
} //fin del if
} //fin del for
fprintf(f,"%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",l,0,x,0.0,u[l][0],u[l][0],0.0,0.0);
printf("%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",l,0,x,0.0,u[l][0],u[l][0],0.0,0.0);
for(j=0;j<=100;j++){
u[0][j]=0.2;
u[10][j]=0.4;
t=(j+1)*k;
for (i=0;i<N+1;i++){
if ((i==0) || (i==10))
{x=i*h;
fprintf(f,"%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",i,j+1,x,t,u[j],u[j],0.0,0.0);
printf("%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",i,j+1,x,t,u[j],u[j],0.0,0.0);}
else{
x=i*h;
t=(j+1)*k;
s1=u[i-1][j];
s2=u[j];
s3=u[i+1][j];
u[j+1]=r*s1+(1-2*r)*s2+r*s3;
zz=U(x,t);
diferencia=fabs(zz-u[j+1]);
error=fabs((u[j+1]-zz)/zz)*100;
fprintf(f,"%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",i,j+1,x,t,u[j+1],zz,diferencia,error);
printf("%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",i,j+1,x,t,u[j+1],zz,diferencia,error);}} // fin del for i}//fin del for j
fclose(f);
printf("fin del programa");
while((c = getchar()) != '\n' && c != EOF);
    putchar( c );
break;
}case 2:{system("cls");
        cout<<"Metodo Implicito\n";
        cout<<"\t\t digite un valor para r :";
        cin>>q;
         int i,j,c,l,s;
FILE *f1,*f;
int N=5;
float r=q;
float h=0.1;
float k=r*h*h;
float a[20][20],b[20][20],A[20],B[20],x,xx,diferencia,error,t,zzz;
f=fopen("implicito070.txt","w+");
fprintf(f1,"PARA EL CASO IMPLICITO CRANCK NICHOLSON BVP \n");
fprintf(f1,"r=%3.2f, h=%3.2f,k=%5.3f \n",r,h,k);
fprintf(f1," i j x t U[i,j] Uanalitica diferencia error \n");
printf("PARA EL CASO IMPLICITO CRANCK NICHOLSON BVP r=%3.2f, h=%3.2f\n",r,h);
printf(" i j x t U[i,j] Uanalitica diferencia error \n");
for (i=0;i<=2*N+1;i++) {
x=i*h;
if ((x>=0 ) & (x<=0.5)) {
a
  • =2*x+1;
   a[0][j]=0.2;
a[10][j]=0.4;
t=(j+1)*k;
a[10-i][0]=a
  • ;
zzz=a
  • ;
diferencia=fabs(zzz-a
  • );
error=0;
fprintf(f1," %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,0,x,0.0,a
  • ,zzz,diferencia,error);
printf(" %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,0,x,0.0,a
  • ,zzz,diferencia,error);}//fin del if
if ((x>0.5 ) & (x<1)){
    a
  • =3-2*x;
   a[0][j]=0.2;
a[10][j]=0.4;
t=(j+1)*k;
zzz=a[10-i][0];
diferencia=fabs(zzz-a
  • );
error=diferencia/zzz*100;
fprintf(f1," %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,0,x,0.0,a
  • ,zzz,diferencia,error);
printf(" %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,0,x,0.0,a
  • ,zzz,diferencia,error);}//fin del if
if (x==1){
zzz=a[10-i][0];
diferencia=fabs(zzz-a
  • );
error=0;
fprintf(f1," %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,0,x,0.0,a
  • ,zzz,diferencia,error);
printf(" %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,0,x,0.0,a
  • ,zzz,diferencia,error);}}///fin del for i para llenarlos valores iniciales
for (j=0; j<20;j++) {
for (i=1;i<N+1;i++) {
    if (i==1) {
b=4.0;
b[i+1]=-1;
///rellena de ceros el lado derecho
for (l=i+2;l<N+1;l++){
b[l]=0.0;}
b[N+1]= (2-2*r)*a[j]+r*a[i+1][j];
printf("\n");
fprintf(f,"\n");
}
if ((i>1) && (i!=N)) {
if(i>2) {
///rellena de ceros el lado izquierdo
for (l=1;l<i-1;l++){
b[l]=0.0;}}
b[i-1]=-1;
b=4.0;
b[i+1]=-1;
for (l=i+2;l<N+1;l++){
b[l]=0.0;}
b[N+1]= r*a[i-1][j]+(2-2*r)*a[j]+r*a[i+1][j];
}//fin del if i>1
if (i==N){
for (l=1;l<i-1;l++){
b[l]=0.0;}
b[N-1]=-2.0*r;
b[N]=(2+2*r);
b[N+1]= r*a[i-1][j]+(2-2*r)*a[j]+r*a[i+1][j];
//a[i-1][j]+a[i+1][j];
printf("\n");
} }///fin del for I=1,N
printf("\n");
////METODO GAUSS SIN PIVOTEO-METOD PROGONKA////
///apli-camos progonka directa///
A[1]=-b[1][2]/b[1][1];
B[1]=b[1][N+1]/b[1][1];
for (i=2;i<N+1;i++){
if (i!= N){
A=-b[i+1]/(b+b[i-1]*A[i-1]);}
B=(b[N+1]-b[i-1]*B[i-1])/(b+b[i-1]*A[i-1]);}
//ahora hallamos las soluciones
//printf(”\n”);
xx=B[N];
//las soluciones son los elementos del vector a[j] a[N][j+1]=xx;
printf( "a[%d][%d]= %6.4f \n",N,j+1,a[N][j+1]);
l=N;
while (l>0) {
s=10-l;
xx=A[l]*xx+B[l];
a[l][j+1]=xx;
a[j+1]=xx;
fprintf(f1, "a[%d][%d]= %6.4f \n",l,j+1,a[j+1]);
printf( "a[%d][%d]= %6.4f \n",l,j+1,a[l][j+1]);
l=l-1;}
printf("\n");
t=k*(j+1);
for (i=0;i<2*N+1;i++) //ahora escribe las soluciones en el archivo de texto{
x=i*h;
if ((i==0) || (i==2*N)){
printf(" %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,j+1,x,t,0.0,0.0,0.0,0.0);
fprintf(f1," %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,j+1,x,t,0.0,0.0,0.0,0.0);}
else {
zzz=U(x,t);
diferencia=fabs(zzz-a[j+1]);
error=diferencia/zzz*100;
fprintf(f1," %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,j+1,x,t,a[j+1],zzz,diferencia,error);
printf(" %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,j+1,x,t,a[j+1],zzz,diferencia,error);}}}//fin del j principal fclose(f);
fclose(f1);
while((c = getchar()) != '\n' && c != EOF);
   break;}};
}while(opc<=2);
}


Título: Re: problemas en el caso 2
Publicado por: class_OpenGL en 29 Noviembre 2015, 03:49 am
0º Utiliza las etiquetas GeSHI para que tu código sea más legible!

1º Error que he encontrado (en el caso 1): El ciclo for lo cierras, pero no lo abres!!

Código
  1. for (l=0;l<=N+1;l++) //valores de U con las condiciones iniciales{
  2.    // Codigo del for
  3. }  //fin del for

La llave tienes que ponerla antes de comentar, no después:

Código
  1. for (l=0;l<=N+1;l++) { //valores de U con las condiciones iniciales
  2.    // Codigo del for
  3. }  //fin del for

2º Error que he encontrado (en el caso 2): Es similar al primer error que te he comentado

No te puedo especificar en que línea es porque no usas las etiquetas GeSHI.

Después de haber corregido estos errores, tienes muchos erres de conversión (fundamentalmente de array bidimensional a flotante)

Además, no existe el archivo <iostream.h> Los archivos nativos de C++ no tienen extensión (sería <iostream>

Para incluir archivos de C, se recomienda usar las versiones de C++ (por ejemplo, para incluir "stdlib.h" incluirías "cstdlib")

No puedo analizar mucho tu código porque está muy enrevesado (las variables no tienen nombres descriptivos, usas "fórmulas" muy largas, sentencias muy largas...)

En resumen: ¡Ten cuidado con las llaves y con la asignación!


Título: Re: problemas en el caso 2
Publicado por: class_OpenGL en 29 Noviembre 2015, 03:57 am
Por si alguien quiere analizar mejor el código:

Código
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4. #include <iostream>
  5. #include <conio.h>
  6.  
  7. using namespace std;
  8.  
  9. #define Pi 3.141592653589
  10.  
  11. long double U(double x, double t) {
  12.    long double z; int i;
  13.    z=0;
  14.    for (i=1;i<20;i++)
  15.        z = z+2/(Pi*Pi)*1/(i*i)*(4*sin(Pi*i/2)+i*Pi*(1-cos(i*Pi)))*sin(i*Pi*x)*exp(-Pi*Pi*t*i*i);
  16.    return(z);
  17. }
  18.  
  19. int main() {
  20.    int opc;
  21.    float y,q;
  22.  
  23.    do {
  24.        system("cls");
  25.  
  26.        cout<<"menu\n";
  27.        cout<<"1. Metodo Explicito\n";
  28.        cout<<"2. MEtodo Implicito\n";
  29.        cout<<"\t\t elija su opcion:";
  30.        cin>> opc;
  31.  
  32.        switch(opc) {
  33.            case 1: {
  34.                FILE *f;
  35.                int i,j,N,T,l,c;
  36.                float s1,s2,s3,r,h,k,x,t,error,diferencia;
  37.                float zz;
  38.                float u[11][101];
  39.  
  40.                system("cls");
  41.  
  42.                cout<<"Metodo Explicito\n";
  43.                cout<<"\t\t digite un valor para r :";
  44.                cin>>y;
  45.  
  46.                f=fopen("explicito020.txt","w+");
  47.  
  48.                r=y;
  49.                h=0.1;
  50.                k=r*h*h;
  51.                N=10;
  52.                T=50;
  53.  
  54.                fprintf(f,"r=%4.2f,h=%4.2f,k=%6.4f \n ",r,h,k);
  55.                fprintf(f,"i j x t U[xi,yj] U[x,y] diferencia error \n ");
  56.                printf("i j x t U[xi,yj] U[x,y] diferencia error \n ");
  57.  
  58.                for(l=0;l<=N+1;l++) //valores de U con las condiciones iniciales{
  59.                    x=l*h;
  60.  
  61.                    if ((x>=0 ) & (x<= 0.5)) {
  62.                        u[l][0]=2*x+1;
  63.                        fprintf(f,"%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n ",l,0,x,0.0,u[l][0],u[l][0],0.0,0.0);
  64.                        printf("%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",l,0,x,0.0,u[l][0],u[l][0],0.0,0.0);
  65.                    }//fin del if
  66.  
  67.                    if ((x>0.5 ) & (x<=1)){
  68.                        u[l][0]=3-2*x;
  69.                        fprintf(f,"%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n ",l,0,x,0.0,u[l][0],u[l][0],0.0,0.0);
  70.                        printf("%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",l,0,x,0.0,u[l][0],u[l][0],0.0,0.0);
  71.                    } //fin del if
  72.                } //fin del for
  73.  
  74.                fprintf(f,"%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",l,0,x,0.0,u[l][0],u[l][0],0.0,0.0);
  75.                printf("%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",l,0,x,0.0,u[l][0],u[l][0],0.0,0.0);
  76.  
  77.                for(j=0;j<=100;j++) {
  78.                    u[0][j]=0.2;
  79.                    u[10][j]=0.4;
  80.                    t=(j+1)*k;
  81.  
  82.                    for (i=0;i<N+1;i++) {
  83.                        if ((i==0) || (i==10)) {
  84.                            x=i*h;
  85.                            fprintf(f,"%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",i,j+1,x,t,u[j],u[j],0.0,0.0);
  86.                            printf("%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",i,j+1,x,t,u[j],u[j],0.0,0.0);
  87.                        } else {
  88.                            x=i*h;
  89.                            t=(j+1)*k;
  90.                            s1=u[i-1][j];
  91.                            s2=u[j];
  92.                            s3=u[i+1][j];
  93.                            u[j+1]=r*s1+(1-2*r)*s2+r*s3;
  94.                            zz=U(x,t);
  95.                            diferencia=fabs(zz-u[j+1]);
  96.                            error=fabs((u[j+1]-zz)/zz)*100;
  97.                            fprintf(f,"%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",i,j+1,x,t,u[j+1],zz,diferencia,error);
  98.                            printf("%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",i,j+1,x,t,u[j+1],zz,diferencia,error);
  99.                        }
  100.                    }
  101.                } // fin del for i}//fin del for j
  102.  
  103.                fclose(f);
  104.                printf("fin del programa");
  105.  
  106.                while((c = getchar()) != '\n' && c != EOF);
  107.                putchar(c);
  108.  
  109.                break;
  110.            }
  111.  
  112.            case 2: {
  113.                int i,j,c,l,s;
  114.                FILE *f1,*f;
  115.                int N=5;
  116.                float r=q;
  117.                float h=0.1;
  118.                float k=r*h*h;
  119.                float a[20][20],b[20][20],A[20],B[20],x,xx,diferencia,error,t,zzz;
  120.  
  121.                system("cls");
  122.  
  123.                cout<<"Metodo Implicito\n";
  124.                cout<<"\t\t digite un valor para r :";
  125.                cin>>q;
  126.  
  127.                f=fopen("implicito070.txt","w+");
  128.  
  129.                fprintf(f1,"PARA EL CASO IMPLICITO CRANCK NICHOLSON BVP \n");
  130.                fprintf(f1,"r=%3.2f, h=%3.2f,k=%5.3f \n",r,h,k);
  131.                fprintf(f1," i j x t U[i,j] Uanalitica diferencia error \n");
  132.                printf("PARA EL CASO IMPLICITO CRANCK NICHOLSON BVP r=%3.2f, h=%3.2f\n",r,h);
  133.                printf(" i j x t U[i,j] Uanalitica diferencia error \n");
  134.  
  135.                for (i=0;i<=2*N+1;i++) {
  136.                    x=i*h;
  137.  
  138.                    if((x>=0 ) & (x<=0.5)) {
  139.                        a=2*x+1;
  140.                        a[0][j]=0.2;
  141.                        a[10][j]=0.4;
  142.                        t=(j+1)*k;
  143.                        a[10-i][0]=a;
  144.                        zzz=a;
  145.                        diferencia=fabs(zzz-a);
  146.                        error=0;
  147.  
  148.                        fprintf(f1," %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,0,x,0.0,a
  149.                        ,zzz,diferencia,error);
  150.                        printf(" %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,0,x,0.0,a
  151.                        ,zzz,diferencia,error);
  152.                    } //fin del if
  153.  
  154.                    if ((x>0.5 ) & (x<1)){
  155.                        a=3-2*x;
  156.                        a[0][j]=0.2;
  157.                        a[10][j]=0.4;
  158.                        t=(j+1)*k;
  159.                        zzz=a[10-i][0];
  160.                        diferencia=fabs(zzz-a);
  161.                        error=diferencia/zzz*100;
  162.  
  163.                        fprintf(f1," %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,0,x,0.0,a
  164.                        ,zzz,diferencia,error);
  165.                        printf(" %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,0,x,0.0,a
  166.                        ,zzz,diferencia,error);
  167.                    }//fin del if
  168.  
  169.                    if (x==1){
  170.                        zzz=a[10-i][0];
  171.                        diferencia=fabs(zzz-a);
  172.                        error=0;
  173.  
  174.                        fprintf(f1," %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,0,x,0.0,a
  175.                        ,zzz,diferencia,error);
  176.                        printf(" %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,0,x,0.0,a
  177.                        ,zzz,diferencia,error);
  178.                    }
  179.                } // fin del for i para llenarlos valores iniciales
  180.  
  181.                for (j=0; j<20;j++) {
  182.                    for (i=1;i<N+1;i++) {
  183.                        if (i==1) {
  184.                            b=4.0;
  185.                            b[i+1]=-1;
  186.                            //rellena de ceros el lado derecho
  187.  
  188.                            for (l=i+2;l<N+1;l++) {
  189.                                b[l]=0.0;
  190.                            }
  191.  
  192.                            b[N+1]= (2-2*r)*a[j]+r*a[i+1][j];
  193.                            printf("\n");
  194.                            fprintf(f,"\n");
  195.                        }
  196.  
  197.                        if ((i>1) && (i!=N)) {
  198.                            if(i>2) {
  199.                                //rellena de ceros el lado izquierdo
  200.                                for (l=1;l<i-1;l++) {
  201.                                    b[l]=0.0;
  202.                                }
  203.                            }
  204.  
  205.                            b[i-1]=-1;
  206.                            b=4.0;
  207.                            b[i+1]=-1;
  208.  
  209.                            for (l=i+2;l<N+1;l++){
  210.                                b[l]=0.0;
  211.                            }
  212.  
  213.                            b[N+1]= r*a[i-1][j]+(2-2*r)*a[j]+r*a[i+1][j];
  214.                        }//fin del if i>1
  215.  
  216.                        if (i==N) {
  217.                            for (l=1;l<i-1;l++) {
  218.                                b[l]=0.0;
  219.                            }
  220.  
  221.                            b[N-1]=-2.0*r;
  222.                            b[N]=(2+2*r);
  223.                            b[N+1]= r*a[i-1][j]+(2-2*r)*a[j]+r*a[i+1][j];
  224.                            //a[i-1][j]+a[i+1][j];
  225.                            printf("\n");
  226.                        }
  227.                    }///fin del for I=1,N
  228.  
  229.                    printf("\n");
  230.                    //METODO GAUSS SIN PIVOTEO-METOD PROGONKA////
  231.                    //apli-camos progonka directa///
  232.                    A[1]=-b[1][2]/b[1][1];
  233.                    B[1]=b[1][N+1]/b[1][1];
  234.  
  235.                    for (i=2;i<N+1;i++) {
  236.                        if (i!= N) {
  237.                            A=-b[i+1]/(b+b[i-1]*A[i-1]);
  238.                        }
  239.  
  240.                        B=(b[N+1]-b[i-1]*B[i-1])/(b+b[i-1]*A[i-1]);
  241.                    }
  242.                    //ahora hallamos las soluciones
  243.                    //printf(&#915;Ç¥\n&#915;Ç¥);
  244.                    xx=B[N];
  245.                    //las soluciones son los elementos del vector a[j] a[N][j+1]=xx;
  246.                    printf( "a[%d][%d]= %6.4f \n",N,j+1,a[N][j+1]);
  247.  
  248.                    l=N;
  249.  
  250.                    while (l>0) {
  251.                        s=10-l;
  252.                        xx=A[l]*xx+B[l];
  253.                        a[l][j+1]=xx;
  254.  
  255.                        a[j+1]=xx;
  256.                        fprintf(f1, "a[%d][%d]= %6.4f \n",l,j+1,a[j+1]);
  257.                        printf( "a[%d][%d]= %6.4f \n",l,j+1,a[l][j+1]);
  258.                        l=l-1;
  259.                    }
  260.  
  261.                    printf("\n");
  262.                    t=k*(j+1);
  263.  
  264.                    for (i=0;i<2*N+1;i++) //ahora escribe las soluciones en el archivo de texto{
  265.                        x=i*h;
  266.  
  267.                        if ((i==0) || (i==2*N)) {
  268.                            printf(" %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,j+1,x,t,0.0,0.0,0.0,0.0);
  269.                            fprintf(f1," %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,j+1,x,t,0.0,0.0,0.0,0.0);
  270.                        } else {
  271.                            zzz=U(x,t);
  272.                            diferencia=fabs(zzz-a[j+1]);
  273.                            error=diferencia/zzz*100;
  274.  
  275.                            fprintf(f1," %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,j+1,x,t,a[j+1],zzz,diferencia,error);
  276.                            printf(" %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,j+1,x,t,a[j+1],zzz,diferencia,error);
  277.                        }
  278.                    }
  279.                }//fin del j principal fclose(f);
  280.  
  281.                fclose(f1);
  282.  
  283.                while((c = getchar()) != '\n' && c != EOF);
  284.  
  285.                break;
  286.            }
  287.        };
  288.    } while(opc<=2);
  289.  
  290.    return 0;
  291. }