Red de conocimiento informático - Material del sitio web - Cómo encontrar la inversa de una matriz usando programación en C

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)

{ m=j;

para (k=0; klt; n-1; k )

para (g=0; glt; n-1; g )

{ 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

}

}

}

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)

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>}