Un programa escrito en lenguaje C para encontrar la matriz inversa de una matriz
#define N 5 /*[Nota]: Modifica 6 al orden de la matriz que desees*/
#include "stdio.h"
# include La función "conio.h"
/*js() se utiliza para calcular el determinante, implementada mediante un algoritmo recursivo*/
int js(s, n)
int s[][N], n;
{int z, j, k, r, total=0
int b[N][N];/ *b[N][N] se utiliza para almacenar el cofactor del elemento s[0] en la matriz s[N][N]*/
if(ngt; 2) {for(z= 0 ; zlt; n; z )
{para(j=0; jlt; n-1; j )
para(k=0; klt; n-1; k )
if(kgt;=z) b[j][k]=s[j 1][k 1]
si no b[j][k]=s [ j 1][k];
if(z2==0) r=s[0][z]*js(b,n-1) /*Llamada recursiva*/
);else r=(-1)*s[0][z]*js(b,n-1);
total=total
}
p>}
de lo contrario si(n==2) total=s[0][0]*s[1][1]-s[0][1]*s[ 1 ][0];
return total;
}
/*n_1() La función se utiliza para encontrar el cofactor correspondiente a cada elemento de la matriz original. y store En la matriz b[N][N], se define como tipo flotante*/
void n_1(s, b, n)
int s[][N ], n;
flotador b[][N];
{int z, j, k, l, m, g, a[N][N]; p>
for(z=0;zlt;n;z)
{l=z;
for(j=0;jlt;n;j) p>
{ m=j;
para (k=0; klt; n-1; k )
para (g=0; glt; n-1; g ) p>
{ if(ggt;=mamp;amp;klt;l) a[k][g]=s[k][g 1]
else if( kgt;=lámpara ;amp; glt; m) a[k][g]=s[k 1][g];
else if(kgt;=lámpara;amp;ggt;=m) a[k] [g]=s[k 1][g 1];
si no a[k][g]=s[k][g];
b[z][j]=js(a,n-1
}
}
} ); p>
main()
{int a[N][N];
float b[N][N]
int r; , z, j
temperatura flotante
//clrscr();
printf("Ingrese datos originales:\n");
>
for(z=0;zlt;N;z) /*Ingrese los datos requeridos, que son datos enteros*/
for(j=0;jlt;N;j) < / p>
scanf("d",amp;a[z][j]);
printf("\nPresione Enter continuar..."); ();
//gotoxy(1, 1);
printf("La matriz original es:\n"); 0;zlt;N;z)/*Imprimir la matriz original*/
{for(j=0;jlt;N;j)
printf("5d ", a [z][j]);
printf("\n");
}
r=js(a, N); la función js() para calcular el valor determinante de la matriz original*/
printf("\nLa matriz original hanglieshi es: |A|==d\n",
);if (r==0) printf("Porque |A|==0, la matriz original no tiene nijuzhen!"); /*Condición de juicio: Si |A|==0, la matriz original no tiene inversa matriz, de lo contrario hay una matriz inversa*/
else
{n_1(a, b, N /*Llame a la función n_1() para obtener la "columna" correspondiente; a cada elemento de la matriz original Fórmula", almacenado en la matriz b[N][N]*/
for(z=0;zlt;N;z) /*Encontrar el cofactor algebraico, en esta vez b[N][N ] se almacena en el "cofactor algebraico"*/ correspondiente a cada elemento de la matriz original
for(j=0;jlt;N;j)
if((z j)2 !=0 amp; amp; b[z][j]!=0) b[z][j]=-b[z][j]
for(z=0; zlt; N; z) /*Transponer b[N][N]. En este momento, b[N][N] almacena la matriz adjunta de la matriz original*/
for(j=z 2 ; jlt; N; j )
{temp=b[z][j]
b[z][j]=b[ j][z];
p>
b[j][z]=temp;
}
printf("Porque |A| !=0, la matriz original tiene nijuzhen!\n" );
printf("El bansuijuzhen A* es:\n");
for(z=0;zlt ;N;z)/* Imprimir matriz adjunta A* * /
{for(j=0;jlt;N;j)
printf("4.0f\t", b[z][j]);
>
printf("\n");
}
for(z=0;zlt;N;z) /*Encontrar la matriz inversa, en este momento b [N ][N] almacena la matriz inversa de la matriz original*/
for(j=0;jlt;N;j)
b[z][j]= b [z][j]/r;
printf("\nEl nijuzhen es: (A*)/|A|(|A|=d)\n",r); la Matriz inversa*/
for(z=0;zlt;N;z)
{for(j=0;jlt;N;j)
printf ("8.3f", b[z][j]);
printf("\n");
}
} p>
}