Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Foros > C / C++ > Matriz Inversa
-Foros de debate

C / C++
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

Matriz Inversa
Enviado por Juliancho el día 21 de noviembre de 2002

HOLA.
Necesito que alguien me ayude con un programa en c++ que me calcule la inversa de una matriz n*n, si es posible de más de 2*2.
Agradezco la colaboración.

 
Re: Matriz Inversa
Enviado por BLANCA AURORA GALDAMEZ HERNAND el día 31 de enero de 2003

necesito un programa en C++ que calcule la matriz inversa de 3*3

 
Re: Re: Matriz Inversa
Enviado por hector hugo perez calvo el día 10 de diciembre de 2003

es muy dificil calcular la inversa de una matriz en visual basic yo lo intente varias veces soy maestro dela facultad de ingenieria y llege a la conclusion de que es imposible si alguin sabe como hacerlo por favor envielo

 
Re: Re: Re: Matriz Inversa
Enviado por ---YO--- el día 23 de abril de 2005

ombe yo estoy en tercer semestre de ing y considero q imposibles no hay lo q pasa es q es complicado pues mire lo q necesita hacer si ya tiene su matriz n*n saquele la umentada por la identisdad y a esa le aplicamos gauss yo tengo ese algoritmo en c++ y en matlab

 
Re: Re: Re: Re: Matriz Inversa
Enviado por alan el día 23 de abril de 2005

oye te agradeceria mucho si me pudieras mandar el programa dematriz inversa por favor

 




Re: Matriz Inversa
Enviado por Karla el día 26 de marzo de 2003

yo necesito ese programa, si lo conseguiste, por favor, lo necesito para ayer!!!

 
Re: Re: Matriz Inversa
Enviado por kiki el día 8 de octubre de 2003

si me escribes te mandare enseguida

 
Re: Re: Re: Matriz Inversa
Enviado por ryevilao el día 13 de octubre de 2003

Necesito un programa que calcule la inversa de una matriz y otro que multiplique matrices, por favor!, si tienes algo envíame la información.Gracias.

 
Re: Re: Re: Re: Matriz Inversa
Enviado por adan gerardo saldaña ronzon el día 10 de diciembre de 2003

Public Sub ProdMat()
Dim A() As Single
Dim B() As Single
Dim C() As Single
Dim suma As Single
Dim mA As Byte, nA As Byte, mB As Byte, nB As Byte
Dim i As Byte, j As Byte, k As Byte
Dim r As Integer
If Selection.Areas.Count <> 3 Then
r = MsgBox("Deben seleccionarse tres áreas: " & Chr(10) & Chr(13) & _
"La primera para la matriz A," & Chr(10) & Chr(13) & _
"la segunda para la matriz B," & Chr(10) & Chr(13) & _
"la tercera para la matriz C,", vbExclamation, _
"Error en la selección de áreas")
Else
mA = Selection.Areas(1).Rows.Count
nA = Selection.Areas(1).Columns.Count
mB = Selection.Areas(2).Rows.Count
nB = Selection.Areas(2).Columns.Count
If nA = mB Then
ReDim A(mA, nA)
ReDim B(mB, nB)
ReDim C(mA, nB)
For i = 1 To mA
For j = 1 To nA
A(i, j) = Selection.Areas(1).Cells(i, j).Value
Next j
Next i
For i = 1 To mB
For j = 1 To nB
B(i, j) = Selection.Areas(2).Cells(i, j).Value
Next j
Next i
For i = 1 To mA
For j = 1 To nB
suma = 0
For k = 1 To nA
suma = suma + A(i, k) * B(k, j)
Next k
C(i, j) = suma
Selection.Areas(3).Cells(i, j).Value = C(i, j)
Next j
Next i
Else
r = MsgBox("Las matrices no son conformables", _
vbExclamation, "Error en la selección de áreas")
End If
End If
End Sub
A B
2 3 5 -2 3
-1 7 9 4 -1
7 4 5 0 5
-2 3 2


C





Use el programa: ProdMat






 
Re: Re: Re: Re: Re: Matriz Inversa
Enviado por 8art el día 12 de mayo de 2005

quiero un programa en lenguaje C, es un TAD de un a matriz y que permita hacer las funciiones permitidas, cmo sumar, restar, multiplicar las matrices tambien que saque la inversa y las otras funciones de matriz, respondan a rjkaos@hotmail.com

 

Re: Re: Re: Re: Re: Matriz Inversa
Enviado por Daniel rosas el día 9 de mayo de 2008

si quieres ese programa pues ponte a trabajar mi chavo ya que eso es lo divertido de ser programador

 



Matriz Inversa
Enviado por santiago el día 27 de octubre de 2003

hola kiki coma andas
kiki neceesito que me agas un favor no me podes mandar el programa que calcula la inversa de la matriz
mejor si es una matriz nxn
grasias

 

Re: Re: Re: Matriz Inversa
Enviado por Cris el día 27 de noviembre de 2003

hola me puedes enviar tu codigo plis

 

Re: Re: Re: Matriz Inversa
Enviado por Frank el día 12 de junio de 2005

Hola, como estas porfa necesito matriz inversa en C++
y Determinante de n por n

 
Re: Re: Re: Re: Matriz Inversa
Enviado por Cyric el día 30 de junio de 2008

Para calcular el determinante de una matriz por A=LU (descomposicion gaussiana por ejemplo)
Propiedad determinantes: det(A)=det(LU)=det(L)*det(U) con lo que si tienes la descomposicion LU (que son dos matrices triangulares) solo tienes que hacer el producto de las diagonales. Chao

 


Re: Re: Re: Matriz Inversa
Enviado por clavalamar el día 27 de junio de 2006

Epale chama por favor, podrias enviarme el calculo de inversa de matriz por visual basic, es que lo necesito urgente. Oye un millon de gracias si me lo envias y si no también...

 


Re: Re: Matriz Inversa
Enviado por Rmiranda el día 17 de octubre de 2003

Si me escribes con mucho gusto te ayudare, creo que tengo un codigo de la matriz inversa

blessings,

R.M.

 
Re: Re: Re: Matriz Inversa
Enviado por Darshan el día 12 de noviembre de 2003

por fa nesesito el codigo de la matris inversa en c++

 
Re: Re: Re: Re: Matriz Inversa
Enviado por Martin el día 3 de enero de 2004

Se escribe matriz idiota

 


Re: Re: Re: Matriz Inversa
Enviado por polllo el día 28 de noviembre de 2003

chupa verga

 

Re: Re: Re: Matriz Inversa
Enviado por Pablo Llambo el día 20 de febrero de 2004

Por fa enviame el programa de la inversa de una matriz la necesito de urgencia.

 

Re: Re: Re: Matriz Inversa
Enviado por ubaldo ruiz el día 24 de marzo de 2004

Rmiranda sera muy dificil hacer el programa en Visual Basic o es lo mismo que C++, No se por eso te progunto y si lo tienes en Visual por favor envialo gracias

 



Re: Matriz Inversa
Enviado por isolo el día 31 de marzo de 2003

Pues yo tengo el código pa resolverlo. En cuanto lo encuentre lo pincho akí. Creo q no era mucho código, si no te lo envio por correo.

 
Re: Re: Matriz Inversa
Enviado por Pazk el día 15 de mayo de 2003

que tal amigo te agradeceria que me enviaras el codigo, si necesitas algo y yo puedo ayudarte con gusto lo haré

 

Re: Re: Matriz Inversa
Enviado por leonardo el día 16 de mayo de 2003

hola
yo soy de colombia, necesito resolver este problema, necesito un programa en C que calcule la matriz inversa, te agradeceria con el alma si puedes ayudar, lo necesito para mañana viernes, si puedes mandamelo a este correo leono1750@hotmail.com

 
Re: Re: Re: Matriz Inversa
Enviado por camilo el día 20 de mayo de 2003

leonardo,tu ya no necesitas la matriz inversa, serias tan amable y me la envias al correo electronico de joje@latinmail

 
Re: Re: Re: Re: Matriz Inversa
Enviado por mario oviedo el día 20 de mayo de 2003

Quiero la matriz inversa inmediatamente. Por favor ayudame, si lo quieres hacer escribeme al correo electronica joje@udenar.edu.co y te enviare una foto solo para ti..

 



Re: Re: Matriz Inversa
Enviado por JHONY A CARDONA el día 31 de mayo de 2003

si me puedes ayudar con el codigo para la inversa de una matriz te lo agradeceria. soy de Medellin Colombia y lo necesito para mi trabajo final de c++
gracias

 

Re: Re: Matriz Inversa
Enviado por Rosario el día 11 de noviembre de 2003

Porfas... yo tambien necesito el codigo para calcular la matriz ... me lo podrian enviar a mi e-mail rosariomch@viabcp.com.....
muchisisimas gracias, es urgente....

Y si tuvieran una calculadora de matrices, tambien les agradeceria

 
Re: Re: Re: Matriz Inversa
Enviado por darshan el día 20 de enero de 2005

es facil ayar matriz inversa se hace con gaus jordan

 

Re: Re: Re: Matriz Inversa
Enviado por alan el día 23 de abril de 2005

oye si conseguiste el programa en c++ te agradeceria que me lo mandaras por fa a alan_@hotmail.com

 



Re: Matriz Inversa
Enviado por Mardoqueo el día 19 de mayo de 2003

Si ya la conseguiste haceme el favor de enviarmela me super urge...myol@pantaleon.com

 
Matriz Inversa
Enviado por patt el día 28 de mayo de 2003

Yo tambien necesito el codigo de la matriz inversa, a poder ser con el metodo de gauss-jordan. Os lo agradeceria mucho

 
Re: Matriz Inversa
Enviado por ISM el día 29 de mayo de 2003

#include<stdio.h>
#include<conio.h>
#include<ctype.h>

float pivote,a[50][50],b[50][50];
int i,j,n,k,l;
char opcion;
void lee_matriz();
void fila_pivote();
void col_pivote();
void otros();
void imprime();

void main()
{
do{
clrscr();
lee_matriz();
for(i=0;i<n;i++)
{
j=i;
pivote=a[i][j];
b[i][j]=1/pivote;
fila_pivote();
col_pivote();
otros();
for(k=0;k<n;k++)
for(l=0;l<n;l++)
a[k][l]=b[k][l];
}
imprime();
printf("\n\n¨Desea correrlo de nuevo?(s/n): ");
opcion=toupper(getch());
}while(opcion!='N');
}

void lee_matriz()
{
printf("Hallar la inversa de una matriz nxn\nDame n: ");
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
//printf("Dame el elemento A[%d][%d]: ",i+1,j+1);
scanf("%f",&a[i][j]);
}
}

void fila_pivote()
{
int m;
for(m=0;m<n;m++)
if(m!=i)
b[i][m]=a[i][m]/pivote;
}

void col_pivote()
{
int m;
for(m=0;m<n;m++)
if(m!=j)
b[m][j]=-a[m][j]/pivote;
}

void otros()
{
int x,y;
for(x=0;x<n;x++)
for(y=0;y<n;y++)
if(x!=i&&y!=j)
b[x][y]=a[x][y]-(a[i][y]*a[x][j])/pivote;
}

void imprime()
{
printf("La matriz inversa es:\n\n ");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%4.2f ",a[i][j]);
printf("\n");
}
}

 
MATRIZ INVERSA EN C NO EN C++
Enviado por JULIO CESAR LOPEZ MORGADO el día 4 de julio de 2003

AYUDENMEE!!!!!!
NO ME SALE EL PROGRAMA EN C DE LA MATRIZ INVERSA EN DE NXM ELEMENTOS Y NECESITO ESE PROGRAMA PARA PODER HACER OTRO OJALA ME PUEDAN AYUDAR

 

MATRIZ INVERSA EN C NO EN C++
Enviado por JULIO CESAR LOPEZ MORGADO el día 4 de julio de 2003

AYUDENMEE!!!!!!

NO ME SALE EL PROGRAMA EN C DE LA MATRIZ INVERSA EN DE NXM ELEMENTOS Y NECESITO ESE PROGRAMA PARA PODER HACER OTRO OJALA ME PUEDAN AYUDAR MI CORREO ES JCLM28@HOTMAIL.COM

 

Sirve
Enviado por LG el día 9 de julio de 2003

Gracias Pana, si sirve el algoritmo me sirvio de mucho

 
por fa
Enviado por BooZeR el día 23 de julio de 2003

mandame el algoritmo de la matriz inversa que lo necesito pa un trabajo pa mañana.porfa

 


GRACIAS!!!!!
Enviado por Paco el día 12 de agosto de 2003

A quien subió el código fuente de la matriz inversa mil gracias desde León, Guanajuato. México.

 




Re: Matriz Inversa
Enviado por Sefkah el día 28 de mayo de 2003

Hola, yo también necesito un programa que te calcule la matriz inversa (más concretamente una de 9*9, xo en fin...). Si me lo pudierais enviar a Segurosefirot@hotmail.com os lo agradeceria infinitamente

 

Re: Matriz Inversa
Enviado por raul zeferino el día 31 de mayo de 2003

necesito un programa en c de la mtriz inversa

 

Re: Matriz Inversa
Enviado por lisbita el día 30 de julio de 2003

encontraste algo
yo necesito eso tambien. serias tan amable de enviame una respuesta.
por favor
gracias

 
Re: Re: Matriz Inversa
Enviado por lukass el día 14 de noviembre de 2003

bueno una ves yo pedi este tipo de ayuda y literalmente me mandaron por el caño, en cierta parte es verdad, no debemos abocarnos a pedir el programa sino una ayuda, pero en fin te dejo este programa que espero que lo entiendas pues es usando clases pero devuelve la inversa que es lo que te interesa chao
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
class matrix{
long float A[50][50];
public:
float leer(int n);
float detter(int n);
float inversa(int n, int dett);
float vermat(int n);
};

matrix objeto;

float matrix::leer(int n)
{ float i,j;
for(i=0; i<n;i++)
for(j=0; j<n;j++)
cin>>A[i][j];
return 0;
}

float matrix::vermat(int n)
{
float i,j;
for(i=0; i<n;i++)
for(j=0; j<n; j++)
{
cout<<" "<<A[i][j];
if(j==n-1) cout<<"\n";
}
return 0;

}

float matrix::detter(int n)
{
int i,k,j,p,b,q,d;
if(n>2){
k=0; b=1; p=0; q=0;
for(k=0;k<n;k++)
{
i=k;b=1;
for(j=0;j<n; j++)
{
b=b*A[i][j];
i++;
if(i==n) i=0;
}
p+=b;
}
k=0; b=1;
for(k=0;k<n;k++)
{b=1;
i=k;
for(j=n-1;j>=0;j--)
{
b*=A[i][j];
i++;
if(i==n) i=0;
}
q+=b;
}
}
else{
p=A[0][0]*A[1][1];
q=A[0][1]*A[1][0];
}
d=p-q;
return d;
}
float matrix::inversa(int n, int det)
{
int h, k,j,i;
float b[50][50];
float c[50][50];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
c[i][j]=A[i][j];
h=n-1;
for(i=0; i<n; i++)
{
k=n-1;
for(j=0; j<n; j++)
{
b[i][j]=c[h][k];
if((i+j)% 2!=0) b[i][j]*=(-1);
k--;
}
h--;
}
for(i=0; i<n;i++)
for(j=0; j<n;j++)
c[i][j]=b[j][i]/det;
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
cout<<" "<<c[i][j];
cout<<"\n";
}
return 0;
}
void main()
{
int op,grado;
cout<<"\n*******************\nprograma que trabaja con una matriz cuadrada\ndevuelve el determinate de la matriz,";
cout<<"\ny la inversa de la matriz\n**********************\n\n";
cout<<"ingrese el grado de la matriz con la que desea trabajar: ";
cin>>grado;
cout<<"ingrese los "<<grado*grado<<" elementos de la matriz\n";
objeto.leer(grado);
cout<<"\n la matriz es: \n";
objeto.vermat(grado);
cout<<"\n";
cout<<"el determinante de la matriz es: ";
op=objeto.detter(grado);
cout<<op;
cout<<"";
cout<<"\nla inversa de la matriz es:\n\n";
objeto.inversa(grado, op);
}

 


Re: Matriz Inversa
Enviado por Norberto el día 30 de noviembre de 2003

hola la podeis conseguir en:
http://zap.iespana.es/zap/c/punteros.php ahi encontraras todo tipo de informacion. responder si es necesario
Norberto
Santa Cruz Bolivia

 

Re: Matriz Inversa
Enviado por Pablo Abratte el día 3 de marzo de 2004

// Este programa calcula la inversa de una matriz por medio del metodo
// del espejo, es decir se aplica la reduccion de Gauss-Jordan en
// una matriz de nxn y se aplican las mismas operaciones de fila a una
// matriz identidad de nxn
//
// pabloab666@hotmail.com

#include <stdio.h>
#include <conio.h>
#include <math.h>

/*********** VARIABLES GLOBALES **********************/

double matriz[50][50];
double identidad[50][50];
int N; //N contiene el tama¤o de la matriz cuadrada


/*********** PROTOTIPOS DE FUNCIONES *****************/

void hallar_inversa(void);
void escalonar_matriz(void);
void permutar_filas(int fila1, int fila2);
void multip_fila(int fila,double factor);
void sumar_fila_multip(int fila1,int fila2, double factor);
void ceros_abajo(int fila_pivote, int columna_pivote);
void ceros_arriba(int fila_pivote, int columna_pivote);
void generar_matriz_identidad(void);

/*****************************************************/


int main()
{
int fi, co;

clrscr();

do{
printf("Ingrese el tama¤o de la matriz cuadrada: ");
scanf("%i",&N);
if(N>50 || N<2) {clrscr(); printf("El numero debe estar entre 2 y 50\n");}
}while(N>50 || N<2);

for(fi=0;fi<N;fi++)
{
for(co=0;co<N;co++)
{
printf("Ingrese el valor de matriz[%i][%i]",fi+1,co+1);
scanf("%lf",&matriz[fi][co]);
}
}

hallar_inversa();

return 0;
}

/*-------------------------------------------------------------------------*/

void hallar_inversa(void)
{
int cont,cont2, flag=0;

escalonar_matriz();
generar_matriz_identidad(); //rellena la matriz identidad


for(cont=0;cont<N;cont++) //recorre filas
{
for(cont2=0;cont2<N;cont2++) //recorre columnas
{
if(matriz[cont][cont2]!=0) //busca pivote (elemento ditinto de 0)
{
if(matriz[cont][cont2]!=1) //si pivote no es 1, se lo multiplica
{
multip_fila(cont,pow(matriz[cont][cont2],-1));
}

ceros_arriba(cont,cont2); // se hacen 0's por arriba
ceros_abajo(cont,cont2); // y por debajo del pivote

break;
}
}
}

/*--------------------------------------------------------------*/
/* Una vez terminada esta operacion, la matriz identidad estara */
/* transformada en la inversa */
/* */
/* Ahora se comprueba que la matriz original este transformada */
/* en la matriz identidad, de no ser asi la inversa obtenida */
/* no es valida y la matriz no tiena inversa */
/*--------------------------------------------------------------*/


for(cont=0;cont<N;cont++)
{
for(cont2=0;cont2<N;cont2++)
{
if(cont==cont2)
{
if(matriz[cont][cont2]!=1) flag=1;
}
else
{
if(matriz[cont][cont2]!=0) flag=1;
}
}
}



if(flag==1)
{
printf("\n\nLa matriz no tiene inversa\n\n");
}
else
{
printf("\n\nLa Matriz Inversa es :\n\n");

for(cont=0;cont<N;cont++)
{
for(cont2=0;cont2<N;cont2++)
{
printf("%+#0.3f ",identidad[cont][cont2]);

}
printf("\n");
}
}


printf("\nPresione una tecla para continuar...");
getch();


}

/*-----------------------------------------------------------------------*/
/* */
/* Ordena la matriz de forma que quede en su forma escalonada por */
/* renglones */
/* */
/*-----------------------------------------------------------------------*/

void escalonar_matriz(void)
{
int cont, col, ceros, vec[10];
int flag, aux;

for(cont=0;cont<N;cont++)
{
col=0,ceros=0;

if(matriz[cont][col]==0)
{
do{
ceros++;
col++;
}while(matriz[cont][col]==0);
}
vec[cont]=ceros;
}


do
{
flag=0;
for(cont=0;cont<N-1;cont++)
{
if(vec[cont]>vec[cont+1])
{
aux=vec[cont];
vec[cont]=vec[cont+1];
vec[cont+1]=aux;

permutar_filas(cont,cont+1);

flag=1;
}
}
}while(flag==1);

}

/*----------------------------------------------------------------------*/
/* SE DEFINEN LAS 3 OPERACIONES ELEMENTALES DE FILA */
/* */
/* Las operaciones que se le realizen a la matriz para reducirla */
/* tambien deberan realizarsele a la matriz identidad para obtener */
/* la matriz inversa */
/*----------------------------------------------------------------------*/


void permutar_filas(int fila1,int fila2)
{
float auxval;
int cont;

for(cont=0;cont<N;cont++)
{
auxval=matriz[fila1][cont];
matriz[fila1][cont]=matriz[fila2][cont];
matriz[fila2][cont]=auxval;

auxval=identidad[fila1][cont];
identidad[fila1][cont]=identidad[fila2][cont];
identidad[fila2][cont]=auxval;
}
}

/*----------------------------------------------------------------------*/

void multip_fila(int fila,double factor)
{
int cont;

for(cont=0;cont<N;cont++)
{
matriz[fila][cont]=(matriz[fila][cont])*factor;
identidad[fila][cont]=(identidad[fila][cont])*factor;
}
}

/*----------------------------------------------------------------------*/

void sumar_fila_multip(int fila1,int fila2, double factor)
{
int cont;
for(cont=0;cont<N;cont++)
{
matriz[fila1][cont]=(matriz[fila1][cont])+((matriz[fila2][cont])*factor);
identidad[fila1][cont]=(identidad[fila1][cont])+((identidad[fila2][cont])*factor);
}
}


void ceros_arriba(int fila_pivote, int columna_pivote)
{
int cont;

for(cont=0;cont<fila_pivote;cont++)
{
sumar_fila_multip(cont,fila_pivote,((matriz[cont][columna_pivote])*(-1)));

}
}

/*-------------------------------------------------------------------------*/
void ceros_abajo(int fila_pivote, int columna_pivote)
{
int cont;

for(cont=columna_pivote+1;cont<N;cont++)
{
sumar_fila_multip(cont,fila_pivote,((matriz[cont][columna_pivote])*(-1)));
}

}
/*-------------------------------------------------------------------------*/
void generar_matriz_identidad(void)
{
int i,j;
for(i=0;i<50;i++)
{
for(j=0;j<50;j++)
{
if(i==j) identidad[i][j]=1;
else identidad[i][j]=0;
}
}
}

 
Matriz Inversa
Enviado por Matriz Inversa el día 10 de mayo de 2004

No encuentro por ningun lado el metodo de shipley para encotrar matrices inversas por favo si alguien lo conoce envienmelo.

 
Re: Matriz Inversa
Enviado por Alberto garrido el día 28 de noviembre de 2004

Muchas gracias por los codigos

 


Re: Re: Matriz Inversa
Enviado por calell el día 14 de abril de 2005

gracias a los que a todos los que enviaron el programa de la matriz inversa

 


Re: Matriz Inversa
Enviado por oscar el día 12 de marzo de 2005

Esto te puede ayudar, es el algoritmo que calcula la inversa de una matriz.

/*-----
Función que calcula la inversa de una matriz cuadrada.

Parámetros :

vfMtriz : Recibe la dirección de la matriz Inicial a la que se le calculará la Inversa.
bError : Recibe la dirección de una variable donde se indicará sí fue posible o no calcular la matriz Inversa, asignándole un valor de TRUE o FALSE respectivamente.
-----*/

void MtrizInvrsa(float vfMtriz[][], BOOL &bError)
{
int i, j, k;

float fPbte1 = 0.0f, fPbte2 = 0.0f;

float vfInvrsa[20][20];

// Asignar unos (1) a su Diagonal - Matriz Identidad.

for (i = 0; i < 20; i++) // Asignar unos.
vfInvrsa[i][i] = 1.0f;

// Calcular la Inversa de la matriz.

for (j = 0; j < 20; j++) // Para cada Columna.
for (i = 0; i < 20; i++) // Para cada Fila.
{
if (i == j || vfMtriz[i][j] == 0)
continue;

fPbte1 = vfMtriz[j][j];
fPbte2 = vfMtriz[i][j];

for (k = 0; k < 20; k++)
{
vfInvrsa[i][k] = vfInvrsa[i][k] * fPbte1 - vfInvrsa[j][k] * fPbte2;
vfMtriz[i][k] = vfMtriz[i][k] * fPbte1 - vfMtriz[j][k] * fPbte2;
}
}

 

Re: Matriz Inversa
Enviado por azteca el día 22 de abril de 2005

un favorzote, en caso de que si hayas conseguido el programa de la inversa de la matriz podrías pasarmelo mi vida depende de eso, por favor.

 
Re: Re: Matriz Inversa
Enviado por alan el día 23 de abril de 2005

#include <stdio.h>
#include <conio.h>
#include <math.h>

/*********** VARIABLES GLOBALES **********************/

double matriz[50][50];
double identidad[50][50];
int N; //N contiene el tama¤o de la matriz cuadrada


/*********** PROTOTIPOS DE FUNCIONES *****************/

void hallar_inversa(void);
void escalonar_matriz(void);
void permutar_filas(int fila1, int fila2);
void multip_fila(int fila,double factor);
void sumar_fila_multip(int fila1,int fila2, double factor);
void ceros_abajo(int fila_pivote, int columna_pivote);
void ceros_arriba(int fila_pivote, int columna_pivote);
void generar_matriz_identidad(void);

/*****************************************************/


int main()
{
int fi, co;

clrscr();

do{
printf(\"Ingrese el tama¤o de la matriz cuadrada: \");
scanf(\"%i\",&N);
if(N>50 || N<2) {clrscr(); printf(\"El numero debe estar entre 2 y 50\\n\");}
}while(N>50 || N<2);

for(fi=0;fi<N;fi++)
{
for(co=0;co<N;co++)
{
printf(\"Ingrese el valor de matriz[%i][%i]\",fi+1,co+1);
scanf(\"%lf\",&matriz[fi][co]);
}
}

hallar_inversa();

return 0;
}

/*-------------------------------------------------------------------------*/

void hallar_inversa(void)
{
int cont,cont2, flag=0;

escalonar_matriz();
generar_matriz_identidad(); //rellena la matriz identidad


for(cont=0;cont<N;cont++) //recorre filas
{
for(cont2=0;cont2<N;cont2++) //recorre columnas
{
if(matriz[cont][cont2]!=0) //busca pivote (elemento ditinto de 0)
{
if(matriz[cont][cont2]!=1) //si pivote no es 1, se lo multiplica
{
multip_fila(cont,pow(matriz[cont][cont2],-1));
}

ceros_arriba(cont,cont2); // se hacen 0\'s por arriba
ceros_abajo(cont,cont2); // y por debajo del pivote

break;
}
}
}

/*--------------------------------------------------------------*/
/* Una vez terminada esta operacion, la matriz identidad estara */
/* transformada en la inversa */
/* */
/* Ahora se comprueba que la matriz original este transformada */
/* en la matriz identidad, de no ser asi la inversa obtenida */
/* no es valida y la matriz no tiena inversa */
/*--------------------------------------------------------------*/


for(cont=0;cont<N;cont++)
{
for(cont2=0;cont2<N;cont2++)
{
if(cont==cont2)
{
if(matriz[cont][cont2]!=1) flag=1;
}
else
{
if(matriz[cont][cont2]!=0) flag=1;
}
}
}



if(flag==1)
{
printf(\"\\n\\nLa matriz no tiene inversa\\n\\n\");
}
else
{
printf(\"\\n\\nLa Matriz Inversa es :\\n\\n\");

for(cont=0;cont<N;cont++)
{
for(cont2=0;cont2<N;cont2++)
{
printf(\"%+#0.3f \",identidad[cont][cont2]);

}
printf(\"\\n\");
}
}


printf(\"\\nPresione una tecla para continuar...\");
getch();


}

/*-----------------------------------------------------------------------*/
/* */
/* Ordena la matriz de forma que quede en su forma escalonada por */
/* renglones */
/* */
/*-----------------------------------------------------------------------*/

void escalonar_matriz(void)
{
int cont, col, ceros, vec[10];
int flag, aux;

for(cont=0;cont<N;cont++)
{
col=0,ceros=0;

if(matriz[cont][col]==0)
{
do{
ceros++;
col++;
}while(matriz[cont][col]==0);
}
vec[cont]=ceros;
}


do
{
flag=0;
for(cont=0;cont<N-1;cont++)
{
if(vec[cont]>vec[cont+1])
{
aux=vec[cont];
vec[cont]=vec[cont+1];
vec[cont+1]=aux;

permutar_filas(cont,cont+1);

flag=1;
}
}
}while(flag==1);

}

/*----------------------------------------------------------------------*/
/* SE DEFINEN LAS 3 OPERACIONES ELEMENTALES DE FILA */
/* */
/* Las operaciones que se le realizen a la matriz para reducirla */
/* tambien deberan realizarsele a la matriz identidad para obtener */
/* la matriz inversa */
/*----------------------------------------------------------------------*/


void permutar_filas(int fila1,int fila2)
{
float auxval;
int cont;

for(cont=0;cont<N;cont++)
{
auxval=matriz[fila1][cont];
matriz[fila1][cont]=matriz[fila2][cont];
matriz[fila2][cont]=auxval;

auxval=identidad[fila1][cont];
identidad[fila1][cont]=identidad[fila2][cont];
identidad[fila2][cont]=auxval;
}
}

/*----------------------------------------------------------------------*/

void multip_fila(int fila,double factor)
{
int cont;

for(cont=0;cont<N;cont++)
{
matriz[fila][cont]=(matriz[fila][cont])*factor;
identidad[fila][cont]=(identidad[fila][cont])*factor;
}
}

/*----------------------------------------------------------------------*/

void sumar_fila_multip(int fila1,int fila2, double factor)
{
int cont;
for(cont=0;cont<N;cont++)
{
matriz[fila1][cont]=(matriz[fila1][cont])+((matriz[fila2][cont])*factor);
identidad[fila1][cont]=(identidad[fila1][cont])+((identidad[fila2][cont])*factor);
}
}


void ceros_arriba(int fila_pivote, int columna_pivote)
{
int cont;

for(cont=0;cont<fila_pivote;cont++)
{
sumar_fila_multip(cont,fila_pivote,((matriz[cont][columna_pivote])*(-1)));

}
}

/*-------------------------------------------------------------------------*/
void ceros_abajo(int fila_pivote, int columna_pivote)
{
int cont;

for(cont=columna_pivote+1;cont<N;cont++)
{
sumar_fila_multip(cont,fila_pivote,((matriz[cont][columna_pivote])*(-1)));
}

}
/*-------------------------------------------------------------------------*/
void generar_matriz_identidad(void)
{
int i,j;
for(i=0;i<50;i++)
{
for(j=0;j<50;j++)
{
if(i==j) identidad[i][j]=1;
else identidad[i][j]=0;
}
}
}

 
Re: Re: Re: Matriz Inversa
Enviado por robinson lapeira el día 17 de diciembre de 2007

#include <stdio.h>
#include <conio.h>
#include <math.h>

/*********** VARIABLES GLOBALES **********************/

double matriz[50][50];
double identidad[50][50];
int N; //N contiene el tama¤o de la matriz cuadrada


/*********** PROTOTIPOS DE FUNCIONES *****************/

void hallar_inversa(void);
void escalonar_matriz(void);
void permutar_filas(int fila1, int fila2);
void multip_fila(int fila,double factor);
void sumar_fila_multip(int fila1,int fila2, double factor);
void ceros_abajo(int fila_pivote, int columna_pivote);
void ceros_arriba(int fila_pivote, int columna_pivote);
void generar_matriz_identidad(void);

/*****************************************************/


int main()
{
int fi, co;

clrscr();

do{
printf(\"Ingrese el tama¤o de la matriz cuadrada: \");
scanf(\"%i\",&N);
if(N>50 || N<2) {clrscr(); printf(\"El numero debe estar entre 2 y 50\\n\");}
}while(N>50 || N<2);

for(fi=0;fi<N;fi++)
{
for(co=0;co<N;co++)
{
printf(\"Ingrese el valor de matriz[%i][%i]\",fi+1,co+1);
scanf(\"%lf\",&matriz[fi][co]);
}
}

hallar_inversa();

return 0;
}

/*-------------------------------------------------------------------------*/

void hallar_inversa(void)
{
int cont,cont2, flag=0;

escalonar_matriz();
generar_matriz_identidad(); //rellena la matriz identidad


for(cont=0;cont<N;cont++) //recorre filas
{
for(cont2=0;cont2<N;cont2++) //recorre columnas
{
if(matriz[cont][cont2]!=0) //busca pivote (elemento ditinto de 0)
{
if(matriz[cont][cont2]!=1) //si pivote no es 1, se lo multiplica
{
multip_fila(cont,pow(matriz[cont][cont2],-1));
}

ceros_arriba(cont,cont2); // se hacen 0\'s por arriba
ceros_abajo(cont,cont2); // y por debajo del pivote

break;
}
}
}

/*--------------------------------------------------------------*/
/* Una vez terminada esta operacion, la matriz identidad estara */
/* transformada en la inversa */
/* */
/* Ahora se comprueba que la matriz original este transformada */
/* en la matriz identidad, de no ser asi la inversa obtenida */
/* no es valida y la matriz no tiena inversa */
/*--------------------------------------------------------------*/


for(cont=0;cont<N;cont++)
{
for(cont2=0;cont2<N;cont2++)
{
if(cont==cont2)
{
if(matriz[cont][cont2]!=1) flag=1;
}
else
{
if(matriz[cont][cont2]!=0) flag=1;
}
}
}



if(flag==1)
{
printf(\"\\n\\nLa matriz no tiene inversa\\n\\n\");
}
else
{
printf(\"\\n\\nLa Matriz Inversa es :\\n\\n\");

for(cont=0;cont<N;cont++)
{
for(cont2=0;cont2<N;cont2++)
{
printf(\"%+#0.3f \",identidad[cont][cont2]);

}
printf(\"\\n\");
}
}


printf(\"\\nPresione una tecla para continuar...\");
getch();


}

/*-----------------------------------------------------------------------*/
/* */
/* Ordena la matriz de forma que quede en su forma escalonada por */
/* renglones */
/* */
/*-----------------------------------------------------------------------*/

void escalonar_matriz(void)
{
int cont, col, ceros, vec[10];
int flag, aux;

for(cont=0;cont<N;cont++)
{
col=0,ceros=0;

if(matriz[cont][col]==0)
{
do{
ceros++;
col++;
}while(matriz[cont][col]==0);
}
vec[cont]=ceros;
}


do
{
flag=0;
for(cont=0;cont<N-1;cont++)
{
if(vec[cont]>vec[cont+1])
{
aux=vec[cont];
vec[cont]=vec[cont+1];
vec[cont+1]=aux;

permutar_filas(cont,cont+1);

flag=1;
}
}
}while(flag==1);

}

/*----------------------------------------------------------------------*/
/* SE DEFINEN LAS 3 OPERACIONES ELEMENTALES DE FILA */
/* */
/* Las operaciones que se le realizen a la matriz para reducirla */
/* tambien deberan realizarsele a la matriz identidad para obtener */
/* la matriz inversa */
/*----------------------------------------------------------------------*/


void permutar_filas(int fila1,int fila2)
{
float auxval;
int cont;

for(cont=0;cont<N;cont++)
{
auxval=matriz[fila1][cont];
matriz[fila1][cont]=matriz[fila2][cont];
matriz[fila2][cont]=auxval;

auxval=identidad[fila1][cont];
identidad[fila1][cont]=identidad[fila2][cont];
identidad[fila2][cont]=auxval;
}
}

/*----------------------------------------------------------------------*/

void multip_fila(int fila,double factor)
{
int cont;

for(cont=0;cont<N;cont++)
{
matriz[fila][cont]=(matriz[fila][cont])*factor;
identidad[fila][cont]=(identidad[fila][cont])*factor;
}
}

/*----------------------------------------------------------------------*/

void sumar_fila_multip(int fila1,int fila2, double factor)
{
int cont;
for(cont=0;cont<N;cont++)
{
matriz[fila1][cont]=(matriz[fila1][cont])+((matriz[fila2][cont])*factor);
identidad[fila1][cont]=(identidad[fila1][cont])+((identidad[fila2][cont])*factor);
}
}


void ceros_arriba(int fila_pivote, int columna_pivote)
{
int cont;

for(cont=0;cont<fila_pivote;cont++)
{
sumar_fila_multip(cont,fila_pivote,((matriz[cont][columna_pivote])*(-1)));

}
}

/*-------------------------------------------------------------------------*/
void ceros_abajo(int fila_pivote, int columna_pivote)
{
int cont;

for(cont=columna_pivote+1;cont<N;cont++)
{
sumar_fila_multip(cont,fila_pivote,((matriz[cont][columna_pivote])*(-1)));
}

}
/*-------------------------------------------------------------------------*/
void generar_matriz_identidad(void)
{
int i,j;
for(i=0;i<50;i++)
{
for(j=0;j<50;j++)
{
if(i==j) identidad[i][j]=1;
else identidad[i][j]=0;
}
}
}

 



Re: Matriz Inversa
Enviado por alan el día 23 de abril de 2005

oye quiero saber si pudiste encontrar el programa para calculra la matriz inversa de ser asi te agradeceria si me lo puedes mandar por favor

 
Re: Re: Matriz Inversa
Enviado por alan el día 23 de abril de 2005

alannnn

 


Re: Matriz Inversa
Enviado por lina el día 6 de mayo de 2005

hola desearia saber si pudiste conseguir el programa en c para calcular la matriz inversa lo necesito con urgencia gracias

 

Re: Matriz Inversa
Enviado por nayeli el día 11 de mayo de 2005

oye me gustaria saber si te mandaron el programa y si me lo puedes enviar, me urge. Agradezco tu atencion, gracias

 
Re: Matriz Inversa
Enviado por hitchen el día 13 de mayo de 2005

Lo lograron hacer en visual????

 
Re: Re: Matriz Inversa
Enviado por Juil el día 19 de mayo de 2005

por fa, si alguien tiene el codigo de la matriz inversa en visual basic, la necesito urgente!!!!

 
Re: Matriz Inversa
Enviado por xso2 el día 24 de mayo de 2005

juil si lla consegiste el codigo de la matriz inversa me lo podrias pasar porfavor, urge para antes del miercoles 25
,si necesitas algo con mucho gusto te alludare

 



Re: Re: Matriz Inversa
Enviado por gato_loko el día 20 de septiembre de 2005

HOLA, NECESITO QUE ME HAGAN UN FAVOR, ME URGE EL CODIGO DE LA MATRIZ MULTIDIMENCIONAL POR FAVOR SI ALGUIEN LO TIENE SI ME LOPUEDE ENVIAR Y COMPARTIR CODIGO OJO CODIGOS EN JAVA

 



Tienda
Patrocinados
 

Copyright © 1999-2006 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network