calcular mariz inversa??
Publicado por Pili (1 intervención) el 23/05/2003 11:59:34
alguien sabe el codigo para q una funcion me calcule la matriz inversa o donde lo puedo conseguir??
muchas gracias
muchas gracias
Valora esta pregunta


0
#include <stdio.h>
#define SIZE 3
// Función para calcular el determinante de una matriz 3x3
float determinant(float matrix[SIZE][SIZE]) {
return matrix[0][0] * (matrix[1][1] * matrix[2][2] - matrix[1][2] * matrix[2][1]) -
matrix[0][1] * (matrix[1][0] * matrix[2][2] - matrix[1][2] * matrix[2][0]) +
matrix[0][2] * (matrix[1][0] * matrix[2][1] - matrix[1][1] * matrix[2][0]);
}
// Función para calcular la matriz adjunta
void adjoint(float matrix[SIZE][SIZE], float adj[SIZE][SIZE]) {
adj[0][0] = matrix[1][1] * matrix[2][2] - matrix[1][2] * matrix[2][1];
adj[0][1] = -(matrix[1][0] * matrix[2][2] - matrix[1][2] * matrix[2][0]);
adj[0][2] = matrix[1][0] * matrix[2][1] - matrix[1][1] * matrix[2][0];
adj[1][0] = -(matrix[0][1] * matrix[2][2] - matrix[0][2] * matrix[2][1]);
adj[1][1] = matrix[0][0] * matrix[2][2] - matrix[0][2] * matrix[2][0];
adj[1][2] = -(matrix[0][0] * matrix[2][1] - matrix[0][1] * matrix[2][0]);
adj[2][0] = matrix[0][1] * matrix[1][2] - matrix[0][2] * matrix[1][1];
adj[2][1] = -(matrix[0][0] * matrix[1][2] - matrix[0][2] * matrix[1][0]);
adj[2][2] = matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0];
}
// Función para calcular la matriz inversa
int inverse(float matrix[SIZE][SIZE], float inverse[SIZE][SIZE]) {
float det = determinant(matrix);
if (det == 0) {
printf("La matriz no tiene inversa (determinante es 0).\n");
return 0; // La matriz no es invertible
}
float adj[SIZE][SIZE];
adjoint(matrix, adj);
// Calcular la inversa
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
inverse[i][j] = adj[i][j] / det;
}
}
return 1; // La matriz fue invertida exitosamente
}
// Función para imprimir la matriz
void printMatrix(float matrix[SIZE][SIZE]) {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
printf("%.2f ", matrix[i][j]);
}
printf("\n");
}
}
int main() {
float matrix[SIZE][SIZE] = {
{4, 7, 2},
{3, 6, 1},
{2, 5, 3}
};
float inverseMatrix[SIZE][SIZE];
if (inverse(matrix, inverseMatrix)) {
printf("La matriz inversa es:\n");
printMatrix(inverseMatrix);
}
return 0;
}