Sie sind auf Seite 1von 9

1#include<stdio.

h>

2#include<stdlib.h>

3#include<cmath>

5#define TAM 50

7/*MATRIZ CON LOS COFACTOR DE LA MATRIZ X ES UNA MATRIZ ADJUNTA*/

10/*Funcion para cargar los datos de la matriz A*/

11void asigna_valores(int orden,float Matriz[][TAM]);

12void muestra(int orden, float Matriz[][TAM]);

13float deter(float Matriz[][TAM], int orden);

14float cofactor(float Matriz[][TAM], int orden , int fila_a_elim, int columna_a_elim);

15void matriz_de_cofactores(float A[][TAM],float B[][TAM], int orden );

16void Transpuesta_de_la_matriz(float A[][TAM],float B[][TAM], int orden);

17void Inversa_de_la_Adjunta_de_la_matriz(float C [][TAM],int orden, float Valor_del_deter);

18

19

20

21

22

23int main(){

24

25 int dime;

26 float A[TAM][TAM],B[TAM][TAM], C[TAM][TAM];

1 1
2
27 float Valor_del_deter;

28

29 printf("DIMENSIONES DE LA MATRIZ CUADRADA \n");

30

31 scanf("%d",&dime);

32

33 while(dime<0 ||dime>TAM) {

34 printf("Vuelva a ingresar el tamaño; que es una matriz cuadrada\n");

35 scanf("%d",&dime);

36

37 }

38 printf("El tamaño de la matriz es: %d x %d\n",dime,dime);

39 system("PAUSE");

40

41

42printf("eL DETERMINANTE DADO ES:\n");

43 asigna_valores(dime,A);

44

45muestra(dime,A);

46Valor_del_deter=deter(A,dime);

47printf("El VALOR DEL DETERMINATE ES: %0.2f\n", Valor_del_deter );

48

49 system("PAUSE");

50

51/*crear las submatrices*/

52 matriz_de_cofactores(A, B,dime);

3 2
4
53

54 printf("LA MATRIZ DE COFACTOR DE LA MATRIZ DADA ES:\n");

55

56 muestra(dime,B);

57Transpuesta_de_la_matriz(B, C,dime );

58printf("LA MATRIZ TRANSPUESTA DE COFACTOR DE LA MATRIZ DADA ES:\n");

59

60muestra(dime,C);

61system("PAUSE");

62

63printf("LA MATRIZ INVERSA DE LA MATRIZ DADA ES:\n");

64

65Inversa_de_la_Adjunta_de_la_matriz(C,dime,Valor_del_deter);

66

67muestra(dime,C);

68system("PAUSE");

69

70return 0;

71

72}

73

74 void Inversa_de_la_Adjunta_de_la_matriz(float C[][TAM] ,int orden, float Valor_del_deter){

75

76 for (int fila_transp=0;fila_transp<orden;fila_transp++){

77 for(int columna_recorrer=0;columna_recorrer<orden;columna_recorrer++){

78

5 3
6
79 C[columna_recorrer][fila_transp]=C[columna_recorrer]
80[fila_transp]/Valor_del_deter;

81

82

83 }

84

85 }

86

87 }

88

89

90

91void Transpuesta_de_la_matriz(float A[][TAM],float B[][TAM], int orden){

92

93 if(orden ==1){

94 B[0][0]=A[0][0];

95

96 }

97

98

99

100 else{

101

102 for (int fila_transp=0;fila_transp<orden;fila_transp++){

103 for(int columna_recorrer=0;columna_recorrer<orden;columna_recorrer++){

104

7 4
8
105 B[columna_recorrer][fila_transp]=A[fila_transp]
106[columna_recorrer] ;

107

108 }

109

110 }

111

112 }

113

114}

115

116

117void matriz_de_cofactores(float A[][TAM],float B[][TAM], int orden){

118

119 if(orden ==1){

120 B[0][0]=A[0][0];

121

122 }

123 else{

124

125 for (int fila_a_elim=0;fila_a_elim<orden;fila_a_elim++){

126 for(int columna_a_elim=0;columna_a_elim<orden;columna_a_elim++){

127 float Submatriz[TAM][TAM];

128 int orden_Submatriz= orden-1;

129 int x=0;

130 int y=0;

9 5
10
131

132 for(int i=0; i<orden; i++){

133 for(int j=0; j<orden;j++){

134 if (i!=fila_a_elim && j!=columna_a_elim ){

135 Submatriz[x][y]=A[i][j];

136 y++; /*incremeto y para pasar a la otra columna*/

137 }

138 if(y>= orden_Submatriz){

139 x++; /*incremento x para pasar al asiguiente fifloat cofactor(float


140Matriz[][TAM], int orden , int fila, int columna);la*/

141 y=0; /*vuelvo a empesar en la la columna "0" y repito el paso


142anterior*/

143 }

144

145 }

146

147 }

148

149 B[fila_a_elim][columna_a_elim]=deter(Submatriz,orden_Submatriz)*pow(-
1501.0,fila_a_elim+columna_a_elim);

151

152 }

153

154 }

155

156 }

157

11 6
12
158}

159

160

161

162void muestra(int orden, float Matriz[][TAM]){

163 for(int i=0 ;i< orden;i++){

164 printf("\n");

165 for(int j=0 ;j<orden;j++){

166 printf(" %0.2f",Matriz[i][j]);

167 fflush(stdout); /* esta instruccion es para limpiar el buffer, cuanso se presenta un dato en
168patalla*/

169 }

170 printf("\n");

171

172 }

173

174}

175

176void asigna_valores(int orden,float Matriz[][TAM]){

177

178 for(int i=0 ;i< orden;i++){

179

180 for(int j=0 ;j<orden;j++){

181 printf("EL DATO (%d,%d) ",i+1,j+1);

182 fflush( stdout );

183 scanf("%f",&Matriz[i][j]);

13 7
14
184 fflush( stdin ); /* esta instruccion es para limpiar el buffer, cuando entra un dato por el
185teclado*/

186 }

187 }

188}

189

190float deter(float Matriz[][TAM], int orden){

191 float dete=0.0;

192

193 if(orden==1){

194 dete= Matriz[0][0];

195 }

196 else{

197

198 for (int j=0; j<orden; j++){

199 /*vamos a tomar el teorema de laplace ,con la primera fila multiplicada con sus
200cofactores para calcula el determinate*/

201 dete=dete+ Matriz[0][j]* cofactor(Matriz, orden, 0, j);

202

203 }

204 }

205

206 return dete;

207 }

208

209float cofactor(float Matriz[][TAM], int orden , int fila_a_elim, int columna_a_elim){

15 8
16
210

211 float Submatriz[TAM][TAM];

212 int orden_Submatriz= orden-1;

213 int x=0;

214 int y=0;

215

216 for(int i=0; i<orden; i++){

217 for(int j=0; j<orden;j++){

218 if (i!=fila_a_elim && j!=columna_a_elim ){

219 Submatriz[x][y]=Matriz[i][j];

220 y++; /*incremeto y para pasar a la otra columna*/

221 }

222 if(y>= orden_Submatriz){

223 x++; /*incremento x para pasar al asiguiente fifloat cofactor(float


224Matriz[][TAM], int orden , int fila, int columna);la*/

225 y=0; /*vuelvo a empesar en la la columna "0" y repito el paso


226anterior*/

227 }

228

229 }

230

231 }

232return pow(-1.0,fila_a_elim+columna_a_elim)* deter(Submatriz, orden_Submatriz);

233}

17 9
18

Das könnte Ihnen auch gefallen