Red de conocimiento informático - Conocimiento sistemático - Un programa escrito en lenguaje C para encontrar la matriz inversa de una matriz

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)

{ 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");

>

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");

}

}

}