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.
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
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
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
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
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
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
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...
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
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
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..
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
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
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
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
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
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);
};
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
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
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]);
}
}
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 */
/*--------------------------------------------------------------*/
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;
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;
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;
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]);
}
}
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 */
/*--------------------------------------------------------------*/
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;
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;
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]);
}
}
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 */
/*--------------------------------------------------------------*/
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;
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;
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
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