Programa de Minimos.

Dependencies:   mbed

Revision:
7:ec4c4e249c82
Parent:
6:57457ad17880
diff -r 57457ad17880 -r ec4c4e249c82 main.cpp
--- a/main.cpp	Fri Oct 25 15:05:26 2019 +0000
+++ b/main.cpp	Fri Oct 25 15:29:08 2019 +0000
@@ -1,6 +1,6 @@
 /* ###########################################################################
 **    Archivo        : main.c
-**    Proyecto       : STM32-103C8_Portada
+**    Proyecto       : STM32-103C8_Minimos
 **    Procesador     : STM32F103C8
 **    Herramienta    : Mbed
 **    Version        : Driver 01.01
@@ -49,7 +49,6 @@
 #define FALSE           0               // Estado FALSO
 #define TRUE            1               // Estado VERDADERO
 #define Ticker_Rate     1000            // Tiempo del Ticker
-#define RAIZ(x)         ((x)+2)
 ////////////////////////////////////////// Definimos las notas notas musicales y su frecuencia.
 /*
 +-------------------------------------------------------------------------------
@@ -71,7 +70,7 @@
 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 */
 void Portada();
-void Calculos();
+void Principal();
 void Setup(void);  
 /* END definitions */ 
 
@@ -87,7 +86,7 @@
               
 Setup();            // Inicialización del sistema
 Portada();
-Calculos();         //Mandar a llamar a la funcion Calculos.
+Principal();
 }
 /* END main */
 
@@ -121,45 +120,139 @@
     terminal.printf("\n\r\t\t\e[1;37m           ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA\e[0m"); 
     terminal.printf("\n\n\r\t\t\e[1;37m                INGENIERIA EN COMUNICACIONES Y ELECTRONICA\e[0m"); 
     terminal.printf("\n\n\r\t\t\e[1;37m                            ANALISIS NUMERICO\e[0m"); 
-    terminal.printf("\n\n\r\t\t\e[1;37m                      PROGRAMA: METODO DE BISECCION\e[0m");
+    terminal.printf("\n\n\r\t\t\e[1;37m                             PROGRAMA: MINIMOS\e[0m");
     terminal.printf("\n\n\r\t\t\e[1;37m                      ALUMNO: MARCELO PADRON JAVIER\e[0m");
     terminal.printf("\n\n\r\t\t\e[1;37m                              GRUPO: 4CV2\e[0m\n\n");
     wait(3.0);//Retardo de 3 segundos   
 }
-void Calculos()
+void Principal()
 {
+    {
+ float  aux[10],aux1[10],auxx[10],resultado[10],suma,sumat[10],tole[10],
+        tole1,tolefin[10],tolerancia,w,x1[10],xy[10][10];
+ int    grado,h,i,j;
 
-float xi, xu, xr, xa, ea;
-int iteraciones; 
-terminal.printf("Limite superior de la raiz: ");
-xi=terminal.getc();
-terminal.printf("Limite inferior de la raiz: ");
-xu=terminal.getc();
-terminal.printf("%12s %10s %10s %10s %10s\n", "Iteraciones", "Xi", "Xu", "Xr", "Ea");  
-iteraciones=0;
-xa = 0.0;
-ea = 0;
-do{
-iteraciones++;
-xr = (xi + xu) / 2;
-if(iteraciones >= 2) 
-{
-ea = ((xr - xa) / xr) * 100; // Calculamos el error aproximado a partir de la segunda iteración
+ terminal.printf("\nCual es el grado de la ecuaci¢n (2 ¢ 3): \n");
+ grado=terminal.getc();
+ for(j=0;j<10;j++)
+ {
+  auxx[j]=0;
+  }
+ for(i=0;i<grado;i++)
+ {
+  terminal.printf("\nIngresa la Ecuaci¢n Numero %d \n",i+1);
+  for(j=0;j<grado;j++)
+  {
+   terminal.printf("\nX%d%d= ",i+1,j+1);
+   xy[i][j]=terminal.getc();
+   }
+  terminal.printf("\nY%d=  ",i+1);
+  resultado[i]=terminal.getc();
+  }
+ terminal.printf("\nLas ecuaciones que ingresaste son:\n");
+ for(i=0;i<grado;i++)
+ {
+  for(j=0;j<grado;j++)
+  {
+   terminal.printf(" %.0f[X%d]",xy[i][j],j+1);
+   if(j==0)
+    printf("+");
+   }
+  terminal.printf("=",i+1);
+  terminal.printf("%.0f",resultado[i]);
+  terminal.printf("\n");
+  }
+ terminal.printf("\n Matriz a resolver:\n");
+ for(i=0;i<grado;i++)
+ {
+  terminal.printf("\n%c ",179);
+  for(j=0;j<grado;j++)
+  {
+   terminal.printf(" %.0f ",xy[i][j],j+1);
+   }
+  terminal.printf(" %c",179);
+  terminal.printf("  %.0f ",resultado[i]);
+  terminal.printf(" %c",179);
+  }
+ terminal.printf("\nIngresa la Exactitud o Tolerancia: ");
+ tolerancia=terminal.getc();
+ for(;;)
+ {
+  h=0;
+  do
+  {
+   suma=0;
+   for(i=h;i<h+1;i++)
+   {
+    for(j=0;j<grado;j++)
+    {
+     if(j!=i)
+     {
+      suma+=((xy[i][j]*x1[j])/xy[i][i]);
+      }
+
+     }
+    }
+   sumat[h]=suma;
+   h++;
+   }while(h<grado);
+  for(i=0,j=grado-1;i<grado;i++,j--)
+  {
+   aux[i]=auxx[j];
+   }
+  for(i=0;i<grado;i++)
+  {
+   for(j=0;j<grado;j++)
+   {
+    if(i!=j)
+    {
+     auxx[i]=((resultado[i])/xy[i][i])-(sumat[i]);
+     }
+else{
+    terminal.printf("INDETEMINA");
 }
-ea = fabs(ea); // Calculamos el valor absoluto del número
-terminal.printf("%12d %10f %10f %10f %10f\n", iteraciones, xi, xu, xr, fabs(ea));
-xa = xr;
-if(RAIZ(xr) > 0) 
-{
-xi = xr;
-} 
-else{
-xu = xr;
-}
-} 
-while(ea > 0.5 || (ea == 0.0 && iteraciones == 1));
-terminal.printf("\nLa raiz es de f(x) = x + 2; es: \n", xr); 
-}
+    }
+   }
+  for(i=0,j=grado-1;i<grado;i++,j--)    {  x1[i]=auxx[i];  }
+  for(i=0;i<grado;i++)          {  tole[i]=0;  }
+  for(i=0,j=grado-1;i<grado;i++,j--)    {  aux1[i]=auxx[j];  }
+  for(i=0;i<grado;i++)          {  tole[i]=aux1[i]-aux[i];  }
+
+  int k=0;
+  while(k<grado)
+  {
+   for(i=0;i<grado-1;i++)
+   {
+    if(tole[i]<tole[i+1])
+    {
+     tole1=tole[i];tole[i]=tole[i+1];tole[i+1]=tole1;
+     }
+    }
+   k++;
+   }
+  for( j=0;j<grado;j++)
+  {
+   tolefin[j]=tole[j];
+   }
+  w=tolefin[0];
+  terminal.printf("\n");
+  for(j=0;j<grado;j++)
+  {
+   terminal.printf("x%d=  %f\n",j+1,auxx[j]);
+   }
+  if(fabs(w)<=tolerancia)
+  {
+   terminal.printf("\nResultados en la Iteracion Numero %d \n");
+   for(j=0;j<grado;j++)
+   {
+    terminal.printf("X%d=%.15f\n",j+1,auxx[j]);
+    }
+   terminal.getc();
+   break;
+   }
+  }
+ }
+    }
 /* END routines */   
  
 /* END program */                
@@ -177,4 +270,4 @@
 | THE BEANERS TECHNOLOGIES PROYECT
 +-------------------------------------------------------------------------------
 */
-/* END Mbed */ 
\ No newline at end of file
+/* END Mbed */