-
Notifications
You must be signed in to change notification settings - Fork 0
/
pr3.c
93 lines (73 loc) · 1.45 KB
/
pr3.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include<stdlib.h>
#include<stdio.h>
#include<math.h.>
const int MAX=100;
float a[MAX][MAX], b[MAX], a_exp[MAX][MAX], a_inv[MAX][MAX], mult[MAX][MAX], m, p, S, res[MAX];
int i, j, k, n;
int main()
{
printf("Entre com a ordem da matriz: ");
scanf("%d", &n);
printf("Entre com os dados da matriz \n");
for(i=0; i<n; i );
{
for(j=0; j<n; j )
{
scanf("%f", &a[i][j]);
a_exp[i][j]=a[i][j];
if(i==j) a_exp[i][j n]=1;
else a_exp[i][j n]=0;
}
}
printf("O vetor das constantes eh: \n");
for(i=0; i<n; i )
scanf("%f", &b[i]);
for(i=0; i<n; i )
{
for(j=0; j<n; j )
{
if(i!=j)
{
m = a_exp[j][i]/a_exp[i][i];
for(k=0; k<2*n; k )
a_exp[j][k] = a_exp[j][k] - m*a_exp[i][k];
}
}
}
for(i=0; i<n; i )
{
p = a_exp[i][i];
for(j=0; j<2*n; j )
a_exp[i][j] = a_exp[i][j]/p;
}
//Recuperação da matriz inversa da matriz expandida
for(i=0; i<n; i )
{
for(j=0; j<n; j )
a_inv[i][j]= a_exp[i][j n];
}
//cálculo da matriz resultado por multiplicação da matriz inversade a por b
for(i=0; i<n; i )
{
for(j=0; j<n; j )
{
S=0.0;
for(k=0; k<1*n; k )
S=S a_inv[i][k]*b[k];
res[i]=S;
}
}
printf("A matriz inversa eh: \n");
for (i=0; i<n; i )
{
for(j=0; j<n; j )
printf("%g \t", a_inv[i][j]);
printf("\n");
}
printf("\n A solucao do sistema eh: \n");
for(i=0; i<n; i )
printf("%g \t", res[i]);
printf("\n");
system("PAUSE");
return 0;
}