ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Álgebra y Matemática Discreta


Enviado por   •  20 de Noviembre de 2023  •  Apuntes  •  649 Palabras (3 Páginas)  •  45 Visitas

Página 1 de 3

Asignatura

Datos del alumno

Fecha

Álgebra y Matemática Discreta

Apellidos: JUNQUERA VARA

08/01/2023

Nombre: ANA

Laboratorio. Implementación del método de eliminación gaussiana por el método del pivotaje parcial escalado

El siguiente algoritmo resuelve un sistema de ecuaciones lineales del tipo

E1:  A[1,1] X[1] + A[1,2] X[2] +...+ A[1,n] X[n] = A[1,n+1]

E2:  A[2,1] X[1] + A[2,2] X[2] +...+ A[2,n] X[n] = A[2,n+1]

…..

EN:  A[n,1] X[1] + A[n,2] X[2] +...+ A[n,n] X[n] = A[n,n+1]

mediante el método de eliminación parcial con pivotaje escalado.

Input:  

  • número de incógnitas de la ecuación
  • valores de las incógnitas y términos independientes

Output:

  • Solución del sistema
  • Incógnita 1: X1, Incógnita 2: X2, Incógnita N: XN.

CÓDIGO:

int main()
{
   
// Declaracion de variables
   
int n,j,i,k;
   float
matriz[10][10],pivote,solucion[10]={0};

   
// Pedimos el numero de incognitas del sistema
   
cout<<"Introduce el numero de incognitas: ";
   
cin>>n;

   
// Pedimos los valores del sistema de acuaciones para construir la matriz
   
cout<<"Introduce los valores de cada ecuacion \n";
   for
(i=0;i<n;i++) {
       cout
<<"Ecuacion "<<i+1<<"\n";
       for
(j=0;j<=n;j++) {
           cout
<<"Valor "<<j+1<< ":   ";
           
// Guardamos los valores en la matriz
           
cin>>matriz[i][j];
       
}
   }

   
// Recorro la matriz y reordeno sus filas en funcion de sus coeficientes
   
for(i=n-1;i>0;i--) {
       
// Selecciono la fila con los valores mas altos
       
if(matriz[i-1][0]<matriz[i][0])
           
for(j=0;j<=n;j++) {
               pivote=matriz[i][j]
;
               
matriz[i][j]=matriz[i-1][j];
               
matriz[i-1][j]=pivote;
           
}
   }

   
//Muestro la matriz reordenada
   
cout<<"La matriz reordenada es:" "\n";
   for
(i=0;i<n;i++) {
       
for(j=0;j<=n;j++){
           printf(
"%6.1f",matriz[i][j]);
       
}
       printf(
"\n");
   
}

   
//Pivotaje parcial escalado: recorro la matriz y convierto en 0 los valores por debajo de la diagonal principal
   
for(k=0;k<n-1;k++) {
       
for (i=k;i<n-1;i++) {
           pivote=(matriz[i+
1][k]/matriz[k][k]);
           for
(j=0; j<=n;j++) {
             matriz[i+
1][j]-= pivote*matriz[k][j];
           
}
       }
   }

   
// Muestro la matriz tras aplicar el pivotaje
   
cout<<"Tras el pivotaje la matriz es:" "\n";
   for
(i=0;i<n;i++) {
       
for(j=0;j<=n;j++){
        printf(
"%6.1f",matriz[i][j]);
       
}
       printf(
"\n");
   
}

   
// Sustituyo los valores de las incognitas para resolver el sistema
   
for(i=n-1;i>=0;i--) {
       pivote=
0;
       for
(j=i;j<=n-1;j++){
           pivote=pivote+matriz[i][j]*solucion[j]
;
       
}
       solucion[i]=(matriz[i][n]-pivote)/matriz[i][i]
;
   
}

   
// Muestro la solucion del sistema de ecuaciones
   
printf("Solucion del sistema" "\n");
   for
(i=0;i<n;i++) {
       cout
<<"Incognita "<<i+1<< ": " <<solucion[i]<< "\n";
   
}

   
return 0;
}

...

Descargar como (para miembros actualizados) txt (3 Kb) pdf (119 Kb) docx (245 Kb)
Leer 2 páginas más »
Disponible sólo en Clubensayos.com