Vous êtes sur la page 1sur 3

#include <stdio.

h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
/*PROGRAMA PARA CALCULAR TRAZA, DETERMINANTE, INVERSA, TRASPUESTA Y ECUACION DE
GRADO 3 PARA AUTOVALORES, EN MATRICES 3X3*/
struct matriz{
float a[4][4];
int filas;
int columnas;
};
float traza(struct matriz m);
struct matriz inversa(struct matriz m);
struct matriz adjunta(struct matriz m);
float determinante(struct matriz m);
struct matriz transpuesta(struct matriz m);
float autovalores(struct matriz m);
main()
{
int i,j;
struct matriz m;
struct matriz p;
m.filas=3;
m.columnas=3;
printf("Ingrese una matriz de 3*3\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
scanf("%f",&m.a[i][j]);
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%.1f\t",m.a[i][j]);
}
printf("\n");
}
printf("La traza es:\t%.1f",traza(m));
inversa(m);
printf("El determinante es:\t%.1f\n1",determinante(m));
p=transpuesta(m);
printf("La matriz transpuesta es:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%.1f\t",m.a[i][j]);
}
printf("\n");
}
autovalores(m);
return i;
}
float traza(struct matriz m)
{
float t;
t=m.a[0][0]+m.a[1][1]+m.a[2][2];

return (t);
}
struct matriz inversa(struct matriz m)
{
int i,j;
float mdet=0.0;
struct matriz mad,minv;
mad=adjunta(m);
mdet=determinante(m);
if(mdet!=0.0)
{
printf("determinante es: \t%.1f\n",mdet);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
minv.a[i][j]=(mad.a[i][j])/mdet;
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("\t%.1f\t",minv.a[i][j]);
}
printf("\n");
}
}
else
{
printf("\nLa inversa no existe\n");
}
minv.filas=m.filas;
minv.columnas=m.columnas;
/*printf("FIN INVERSA\n");*/
return(minv);
}
struct matriz adjunta(struct matriz m)
{
struct matriz mad;
int i,j;
mad.a[0][0]=((m.a[1][1]*m.a[2][2])-(m.a[1][2]*m.a[2][1]));
mad.a[1][0]=((m.a[0][1]*m.a[2][2])-(m.a[0][2]*m.a[2][1]));
mad.a[2][0]=((m.a[0][1]*m.a[1][2])-(m.a[0][2]*m.a[1][1]));
mad.a[0][1]=((m.a[1][0]*m.a[2][2])-(m.a[1][2]*m.a[2][0]));
mad.a[1][1]=((m.a[0][0]*m.a[2][2])-(m.a[0][2]*m.a[2][0]));
mad.a[2][1]=((m.a[0][0]*m.a[1][2])-(m.a[0][2]*m.a[1][0]));
mad.a[0][2]=((m.a[1][0]*m.a[2][1])-(m.a[1][1]*m.a[2][0]));
mad.a[1][2]=((m.a[0][0]*m.a[2][1])-(m.a[0][1]*m.a[2][0]));
mad.a[2][2]=((m.a[0][0]*m.a[1][1])-(m.a[0][1]*m.a[1][0]));
mad=transpuesta(mad);
return (mad);
}
float determinante(struct matriz m)
{
float mdet;
mdet=m.a[0][0]*m.a[1][1]*m.a[2][2]+m.a[0][1]*m.a[1][2]*m.a[2][0]+m.a[0][2]*m
.a[1][0]*m.a[2][1]-m.a[2][0]*m.a[1][1]*m.a[0][2]-m.a[2][1]*m.a[1][2]*m.a[0][0]-m
.a[2][2]*m.a[1][0]*m.a[0][1];

return(mdet);
}
struct matriz transpuesta(struct matriz m)
{
struct matriz trans;
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
trans.a[j][i]=m.a[i][j];
}
}
return(trans);
}
float autovalores(struct matriz m)
{
float av[4];
float tcubo,tcuadrado,tlineal, tind,q,r,t,s,d;
tcubo=-1;
tcuadrado=traza(m);
tlineal=((m.a[1][1]*m.a[2][2])+(m.a[1][1])+(m.a[2][2])-(m.a[0][1]*m.a[1][0])
-(m.a[0][2]*m.a[2][0]));
tind=determinante(m);
av[0]=tcubo;
av[1]=tcuadrado;
av[2]=tlineal;
av[3]=tind;
printf("la ecuacion polinomica es: %.1fx^3+%.1fx^2+%.1fx+%.1f\n",av[0],av[1]
,av[2],av[3]);
return(av[0]);
}

Vous aimerez peut-être aussi