Cómo encontrar la inversa de una matriz usando programación en C
#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"); ><
p>for(z=0;zlt;N;z) /*Ingrese los datos requeridos, que son datos enteros*/
for(j=0;jlt;N;j)
scanf("d",amp;a[z][j]);
printf("\nPresione Enter para continuar..."); ;
//gotoxy(1,1);
printf("La matriz original es:\n"); zlt; N; z )/*Imprimir la matriz original*/
{for(j=0; jlt; N; j)
printf("5d", a[z) ][j]);
printf("\n");
}
r=js(a,N); () función 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, entonces la matriz original no tiene matriz inversa); , y viceversa Entonces hay una matriz inversa*/
else
{n_1(a, b, N /*Llame a la función n_1() para obtener el "cofactor); "correspondiente a cada elemento de la matriz original, almacenado en el array b[N][N]*/
for(z=0;zlt;N;z) /*Encontrar el cofactor algebraico, en esta vez en b[N][N] Lo que se almacena es el "cofactor algebraico" correspondiente a cada elemento de la matriz original*/
for(j=0;jlt;N;j) p>
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];
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]);
<p> 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", /*Imprimir matriz inversa * /
for(z=0;zlt;N;z)
{for(j=0;jlt;N;j)
printf( " 8.3f", b[z][j]);
printf("\n"); p>}