Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Sandaris en 14 de Julio 2016, 01:31

Título: Calcular la inversa de una matriz mxn no cuadrada en C
Publicado por: Sandaris en 14 de Julio 2016, 01:31
Hola, necesito una ayuda me piden calcular la inversa de una matriz de tamaño n*m,pero desafortunadamente no conozco mucho de la materia y eh llegado hasta dar con la determinante y crear otra matriz (B) de identidad, espero me puedan ayudar.
Lo que me complica es al momento de transformar la Matriz A a identidad y a su vez ir haciendo los mismos cálculos en la matriz B para calcular la inversa.

Les dejo lo que llevo de codigo

Código: [Seleccionar]
#include <stdio.h>
int main(){
int n,m,i,j,b=1,c1=0,det,a;
printf("Ingrese el tamanio de la fila de la matriz\n");
scanf("%d",&n);
printf("Ingrese el tamanio de la columna de la matriz\n");
scanf("%d",&m);
int A[n][m];
for(i=0;i<n;i++){
    for(j=0;j<m;j++){
    printf("ingrese un valor en la posicion %d,%d\n",i,j);
    scanf("%d",&A[i][j]);
    }
}
for(j=0;j<m;j++){
for(i=0;i<n;i++){
a=i+j;
if(a>=m){
a=a-m;
}
b=b*A[i][a];
}
c1=c1+b;
}
int b1=1,c2=0;
for(j=0;j<m;j++){
for(i=0;i<n;i++){
a=i-1;
if(a<0){
a=a+m;
}
b1=b1*A[i][a];
}
c2=c2+b1;
}
det=c1-c2;
if(det==0){
    printf("La matriz no se puede invertir por que la determinante es 0 \n");
}
else{
printf("La determinante es: %d",det);
int B[n][m];
for(j=0;j<m;j++){
for(i=0;i<n;i++){
        if(i==j){
   B[i][j]=1;
   }

else{
    B[i][j]=0;}

}

}

}
return 0;
}
Título: Re:Calcular la inversa de una matriz en C
Publicado por: Ogramar en 15 de Julio 2016, 17:28
Buenas, quizás no tienes el problema bien planteado. Las matrices que se consideran invertibles, es decir, de las que se puede calcular la inversa, son matrices cuadradas, no puedes calcular inversas de matrices no cuadradas tipo n*m ó m*n

Salu2