• Sábado 27 de Abril de 2024, 05:07

Autor Tema:  se vuelve infinito  (Leído 842 veces)

Grixis

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
se vuelve infinito
« en: Domingo 18 de Julio de 2010, 18:40 »
0
este es solo un trozo de un codigo mas grande que estoy trabajando, lo demas funciona pero estas dos partes no funcionan bien, no dan los resultados y repiten el ciclo infinitamente, estoy usando dev-c++

Código: C++
  1. # include <stdio.h>
  2. # include <conio.h>
  3. # include <windows.h>
  4. # include <math.h>
  5. # include <string.h>
  6.  
  7. main(void)
  8. {
  9.           int opcion,j,i,fun;
  10.           float a,b,es,x,p,fp,fa,fb,p1,ea,x0,fp1,fx,fx0,xi1,mat[3][4],a1,a2,a3,b1,b2,b3,ea1,ea2,ea3,pa[5],ln0,ln2,ln3,ln1,ln4,co1,co2,co3,co4,co0;
  11.           float ex0,ex1,ex2,ex3,ex4,l1,l2,l3,l4,l0,l5,xi2,ln,Ln,LN,Cos,COS,Exp,EXP,va[10],vv,suma,n,f0,func[10],h,con,sum,I;
  12.           system ("color 0a");
  13.           printf("n°º¤ø,¸¸,ø¤º°`°º¤ø,¸MENU°º¤ø,¸¸,ø¤º°`°º¤ø,¸n");
  14.           printf("                                        n");
  15.          printf("1.-Newton Raphsonn");
  16.           printf("2.-Gauss Seideln");
  17.           printf("Ingrese su Opcionn");
  18.           scanf("%d",&opcion);
  19.           switch(opcion)
  20.           {
  21.                         case 1:
  22.                              printf("Ha seleccionado: Newton Raphsonn");
  23.                              printf("La Ecuacion a Evaluar sera: x^2*E^xn");
  24.                              printf("F'(x)=2x*E^xn");
  25.                              printf("Ingrese x0:n");
  26.                              scanf("%f",&x0);
  27.                              printf("Ingrese la Tolerancia:n");
  28.                              scanf("%f",&es);
  29.                              do
  30.                              {
  31.                              printf("n--------------------------------------n");
  32.                              fx=pow(x0,2)*exp(x0);
  33.                              fx0=(2*x0)*exp(x0);
  34.                              if (fx0!=0)
  35.                              {
  36.                                         printf("el valor de F(x): %.4fn",fx);
  37.                                         printf("el valor de F'(x): %.4fn",fx0);
  38.                                         xi1=x0-(fx/fx0);
  39.                                         printf("el valor de xi+1: %.4fn",xi1);
  40.                                         ea=fabs((xi1-x0)/xi1)*100;
  41.                                         printf("El valor relativo fue: %.4f %",ea);
  42.                                         }
  43.                                         else
  44.                                         {
  45.                                             printf("Ya que F'(x)=0, no se puede aplicar el metodon");
  46.                                             }
  47.                                            
  48.                                             printf("n--------------------------------------n");
  49.                                             x0=xi1;
  50.                                             fx=pow(x0,2)*exp(x0);
  51.                                             fx0=(2*x0)*exp(x0);
  52.                                             if (fx0!=0)
  53.                                             {
  54.                                                       printf("el valor de F(x): %.4fn",fx);
  55.                                                       printf("el valor de F'(x): %.4fn",fx0);
  56.                                                       xi2=x0-(fx/fx0);
  57.                                                        printf("el valor de xi+1: %.4fn",xi2);
  58.                                                        }
  59.                                                        else
  60.                                         {
  61.                                             printf("Ya que F'(x)=0, no se puede aplicar el metodon");
  62.                                             }
  63.                                             ea=fabs((xi2-x0)/xi2)*100;
  64.                                             printf("El valor relativo fue: %.4f %",ea);
  65.                                             printf("n--------------------------------------n");
  66.                                             }while (ea>es);
  67.                              break;
  68.                              
  69.                              case 2:
  70.                              printf("Ha seleccionado Gauss Seideln");
  71.                              printf("Ingrese la Matriz 3x4n");
  72.                              for(i=1;i<=3;i++)
  73.                              for(j=1;j<=4;j++)
  74.                              {
  75.                                               printf("Ingrese el elemento  %d,%d de la matriz:", i,j);
  76.                                               scanf("%f",&mat[i][j]);
  77.                                               }
  78.                                               printf("La matriz generada fue:n");
  79.                                               for(i=1;i<=3;i++)
  80.                                               {
  81.                                                                for (j=1;j<=4;j++)
  82.                                                                {
  83.                                                                printf("t%f",mat[i][j]);
  84.                                                                }
  85.                                                                printf("n");
  86.                                                                }
  87.                                                                printf("Ingrese la Tolerancia:n");
  88.                                                                scanf("%f",&es);
  89.                                                                do
  90.                                                                {
  91.                                                                        printf("n--------------------------------------n");
  92.                                                                        a1=mat[1][4]-((mat[1][2]+mat[1][3])/mat[1][1]);
  93.                                                                        a2=mat[2][4]-((mat[2][1]+mat[2][3])/mat[2][2]);
  94.                                                                        a3=mat[3][4]-((mat[3][1]+mat[3][2])/mat[3][3]);
  95.                                                                        printf("el valor de X1 fue: %.4fn",a1);
  96.                                                                        printf("el valor de X2 fue: %.4fn",a2);
  97.                                                                        printf("el valor de X3 fue: %.4fn",a3);
  98.                                                                        ea1=fabs((b1-a1)/b1)*100;
  99.                                                                        ea2=fabs((b2-a2)/b2)*100;
  100.                                                                        ea3=fabs((b3-a3)/b3)*100;
  101.                                                                        printf ("Ea1=%.2fn",ea1);
  102.                                                                        printf ("Ea2=%.2fn",ea2);
  103.                                                                        printf ("Ea3=%.2fn",ea3);
  104.                                                                        printf("n--------------------------------------n");
  105.                                                                        b1=mat[1][4]-(((mat[1][2]*a2)+(mat[1][3]*a3))/mat[1][1]);
  106.                                                                        b2=mat[2][4]-(((mat[2][1]*b1)+(mat[2][3]*a3))/mat[2][2]);
  107.                                                                        b3=mat[3][4]-(((mat[3][1]*b1)+(mat[3][2]*b2))/mat[3][3]);
  108.                                                                        ea1=fabs((b1-a1)/b1)*100;
  109.                                                                        ea2=fabs((b2-a2)/b2)*100;
  110.                                                                        ea3=fabs((b3-a3)/b3)*100;
  111.                                                                        printf("el valor de X1 fue: %.4fn",b1);
  112.                                                                        printf("el valor de X2 fue: %.4fn",b2);
  113.                                                                        printf("el valor de X3 fue: %.4fn",b3);
  114.                                                                        printf ("Ea1=%.2fn",ea1);
  115.                                                                        printf ("Ea2=%.2fn",ea2);
  116.                                                                        printf ("Ea3=%.2fn",ea3);
  117.                                                                        }while ((ea1>es) and (ea2>es) and (ea3>es));
  118.                                                                        break;
  119.                                                                        
  120.                                                                        getch ();
  121.  

czealt

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: se vuelve infinito
« Respuesta #1 en: Lunes 19 de Julio de 2010, 01:11 »
0
Hola, bueno revise el codigo y vi un error en los indices que utilizas para manipular la matriz 'mat'.
Al declarar:

float mat[3][4];

el primer indice va de 0 a 2 y el segundo de 0 a 3. Por ejemplo el codigo para ingresar los valores de 'mat' deberia ser

Código: C
  1.  
  2.  printf("Ingrese la Matriz 3x4n");
  3.  for(i=0;i<3;i++)
  4.     for(j=0;j<4;j++)
  5.     {
  6.        printf("Ingrese el elemento  %d,%d de la matriz:", i+1,j+1);
  7.        scanf("%f",&mat[i][j]);
  8.     }
  9.  
  10.  
Saludos