Escolar Documentos
Profissional Documentos
Cultura Documentos
Objetivo
Mtodo de Eliminao de Gauss com pivoteamento parcial
Code 1: Exemplo de cdigo. No se esquea de mudar para a linguagem utilizada no comando 'language=C'.
1
D i s c i p l i n a : MAP214
Autor :
MARCUS VINICIUS SAAD DE PAULA RODRIGUES
Num. USP :
7160861
EXERCICIO PROGRAMA 2
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
#include
#include
#define
int
< s t d i o . h>
< s t d l i b . h>
MAX 5 0 0
main ( )
/
VARIAVEIS DO PROGRAMA
float
int
a [MAX ] [ MAX] ,
i ,
j ,
m,
n,
k,
b [MAX] ,
lin ,
c [MAX] ,
col ,
t r o c a [MAX] ,
m u l t [MAX ] ;
mem ;
/
ROTINA QUE RECEBE OS COEFICIENTES
DA MATRIZ A.
/
p r i n t f ( " ***** Parametros da matriz A *****\ n" ) ;
p r i n t f ( " Numero de linhas da matriz A: " ) ;
s c a n f ( "%d" , &n ) ;
p r i n t f ( "\n" ) ;
p r i n t f ( " Numero de colunas da matriz A: " ) ;
s c a n f ( "%d" , &m) ;
38
44
/
RECEBE OS COEFICIENTES DA MATRIZ AUMENTADA DO SISTEMA
/
p r i n t f ( "\n" ) ;
p r i n t f ( " Entre com os coeficientes da matriz A ...\ n" ) ;
p r i n t f ( " Lembrando que o A [0][0] , em C , corresponde ao elemento da linha 1 e coluna 1 \n"
45
for
39
40
41
42
43
46
) ;
for
( i
0;
( j
i
=
<
0;
n;
j
i ++){
< m;
j ++){
47
printf (
48
scanf
49
j ) ;
50
51
printf (
"\n" ) ;
52
53
54
55
56
57
58
59
/
ROTINA QUE RECEBE OS COEFICIENTES
DO VETOR b .
/
printf
( " Entre com os coeficientes do vetor b :\ n" ) ;
for
60
61
( i
0;
<
n;
i ++){
" b (% d) = " ,
( "%f" , &c [ i ] ) ;
printf (
scanf
i ) ;
62
63
64
65
66
67
68
69
/
PREENCHE A MATRIZ AUMENTADA DE ACORDO
COM A MATRIZ A E O VETOR b .
/
printf
( "\ nMatriz aumentada ...\ n" ) ;
for
70
71
( i
0;
( j
i
=
aux
<
n;
0;
i ++){
< m;
[ i ][ j ]
j ++){
a[ i ][ j ];
72
73
for
aux
[ i ][ j ]
c [ i ];
74
75
76
77
78
79
80
/
EXIBE A MATRIZ AUMENTADA
QUE IRA SER RESOLVIDA .
/
for
81
82
for
( i
0;
( j
i
=
<
n;
0;
printf
j
(
i ++){
<= m;
j ++){
aux [ i ] [ j ] ) ;
83
printf
84
85
printf (
"\n" ) ;
"\n" ) ;
86
87
88
89
90
91
92
93
94
95
96
97
/
METODO DE GAUSS COM PIVOTEAMENTO.
/
( lin = 0,
col = 0;
l i n < n 1 ; l i n ++, c o l ++){
/
PROCURA, NA COLUNA 0 , PELO ELEMENTO
DE MAIOR VALOR ABSOLUTO. ELE SERA
O PIVOT .
/
for
for
98
99
for
( i
lin
if
( j
0;
1;
j
<
n;
<= m;
( aux [ i ] [ j ]
mem =
>
i ++){
j ++)
aux [ l i n ] [ c o l ] ) {
i ;
/
COLOCA A LINHA DO PIVOT DE MAIOR VALOR
ABSOLUTO NA POSICAO SUPERIOR, LINHA 0 (ZERO) .
/
100
101
102
103
for
104
105
( j
0,
troca [ j ]
= mem ;
=
106
aux [ i ] [ j ]
107
aux [ l i n ] [ j ]
108
<= m;
j ++){
aux [ l i n ] [ j ] ;
=
troca [ j ] ;
109
110
aux [ i ] [ j ] ;
}
}
111
112
113
/
ENCONTRADO O PIVOT DE MAIOR VALOR ABSOLUTO,
114
115
116
for
117
118
119
( i
lin
mult [ j ]
+
=
1,
0;
<
n;
i ++,
j ++){
aux [ i ] [ c o l ] / aux [ l i n ] [ c o l ] ;
120
/
ROTINA QUE ZERA OS ELEMENTOS DAS COLUNAS
UTILIZANDO OS MULTIPLICADORES CALCULADOS
ANTERIORMENTE.
/
121
122
123
124
125
for
126
127
for
( i
128
129
lin
( j
1,
0;
k =
0;
<= m;
aux [ i ] [ j ]
<
n;
i ++,
k++){
j ++){
aux [ l i n ] [ j ]
mult [ k ]
130
aux [ i ] [ 0 ]
131
132
printf
0;
"\n" ) ;
133
/
EXIBE AS MATRIZES INTERMEDIARIAS .
/
134
135
136
for
137
138
for
( i
139
140
0;
( j
i
=
<
n;
0;
printf
j
(
i ++){
<= m;
j ++){
aux [ i ] [ j ] ) ;
141
printf
142
"\n" ) ;
143
144
/
DEPOIS DE OBTER A MATRIZ FINAL ,
TRIANGULARIZADA, A ROTINA ABAIXO
CALCULA OS VALORES DAS VARIAVEIS
DO SISTEMA, NO CASO, AS CORRENTES.
/
( l i n = n 1 ; l i n >= 0 ;
l i n ){
145
146
147
148
149
150
for
151
152
153
154
155
for
b[ lin ]
aux [ l i n ] [ n ] / aux [ l i n ] [ l i n ] ;
( i
0;
<
lin ;
aux [ i ] [ l i n ]
for
i ++){
aux [ i ] [ l i n ]
b[
lin ];
156
157
( i
158
<
lin ;
aux [ i ] [ n ]
0;
aux [ i ] [ n ]
aux [ i ] [ l i n ]
159
i ++){
aux [ i ] [ l i n ] ;
aux [ i ] [ l i n ] ;
160
161
printf
"\n" ) ;
162
/
EXIBE A SOLUCAO DO SISTEMA, OU SEJA ,
AS CORRENTES I1 , I 2 E I 3 .
/
printf
( " Solucao do sistema ... " ) ;
163
164
165
166
167
for
168
169
170
171
( i
0,
printf
j
(
1;
<
n;
i ++,
j ++){
j ,
b[ i ]) ;
}
}
aux [ i ] [ j ] ;
Figura 1: Funcionamento do mtodo de eliminao de Gauss com pivoteamento parcial. Input e output do
programa.
1
Mtodo de Jacobi
Code 2: Exemplo de cdigo. No se esquea de mudar para a linguagem utilizada no comando 'language=C'.
1
D i s c i p l i n a : MAP214
Autor :
MARCUS VINICIUS SAAD DE PAULA RODRIGUES
Num. USP :
7160861
EXERCICIO PROGRAMA 2
PARTE 1 . b :
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include
#include
#include
19
20
22
23
24
25
#define
#define
int
MAX 5 0 0
eps
main ( )
26
29
30
31
0.00001
27
28
<math . h>
18
21
< s t d i o . h>
< s t d l i b . h>
VARIAVEIS DO PROGRAMA
A[MAX] [MAX] : MATRIZ AUMENTADA DO SISTEMA
x [MAX] : VETOR QUE ARMAZENA A SOLUCAO DO SISTEMA
x_ :
SERVE PARA CALCULAR AS COMPONENTE DO VETOR x [MAX]
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
float
A [MAX ] [ MAX] ,
float
max =
int
i ,
printf
scanf
j ,
1;
for
printf
57
58
k,
m,
n;
53
59
aux ;
output ;
FILE
52
56
v e t o r _ a u x [MAX] ,
/
CONTADORES E PONTEIRO PARA O ARQUIVO DE SAIDA .
/
51
55
x_ ,
/
DEFINE O CRITERIO DE PARADA IGUAL
A 1 . ESSE VALOR DEVE SER MAIOR DO QUE e p s .
VEJA A CONDICAO DO LACO (FOR) , LINHA 6 4 .
/
50
54
x [MAX] ,
for
( i
0;
( j
i
=
<
0;
scanf
n;
j
i ++){
<= n ;
"%f" ,
j ++){
&A [ i ] [ j ] ) ;
}
}
60
61
62
63
64
65
66
/
INICIALIZA O VETOR x [MAX] INICIAL COM
COMPONENTES IGUAIS A 1 (UM) .
/
for
67
68
( i
0;
<
n;
vetor_aux [ i ]
x[ i ]
i ++){
1;
1;
69
70
71
72
73
74
75
/
MENSAGEM DE ERRO CASO NAO SEJA POSSIVEL
ABRIR O ARQUIVO DE SAIDA PARA ESCRITA
/
( ( o u t p u t = f o p e n ( " output . txt " , "w" ) ) == NULL) {
p r i n t f ( " Erro na abertura do arquivo de saida !\ n" ) ;
if
76
77
exit (1) ;
}
78
79
80
81
82
83
84
85
86
87
/
CRIA O CABECALHO DO ARQUIVO DE SAIDA
COM OS SEGUINTES PARAMETROS: INTERACAO
VARIAVEIS DO PROBLEMA (NESTE CASO, CORRENTES)
E ERRO.
/
f p r i n t f ( o u t p u t , "k " ) ;
for
( i
0;
fprintf
<
n;
i ++){
( output ,
88
89
f p r i n t f ( output ,
"I%d " ,
( i +1) ) ;
90
91
92
93
94
95
96
97
98
/
PREENCHE A SEGUNDA LINHA DO ARQUIVO DE SAIDA
COM OS VALORES DE k , DO VETOR INICIAL E COM
O ERRO. ESTE, AINDA NAO SENDO DEFINIDO .
/
f p r i n t f ( o u t p u t , "0 " ) ;
for
( i
0;
fprintf
<
n;
i ++){
( output ,
"%d " ,
x[ i ]) ;
99
100
fprintf
" -\n" ) ;
( output ,
101
/
METODO DE JACOBI
/
102
103
104
for
105
106
107
108
(k =
for
1;
max =
max >
0;
x_ =
( i
0;
for
109
110
if
else
( j
<
k++){
112
113
n;
0;
( i
111
114
eps ;
0;
i ++){
<
!=
n;
j ++){
j )
x_ = x_ +
x[ i ]
(A [ i ] [ j ]
vetor_aux [
j ] ) /A [ i ] [ i ] ;
= A[ i ] [ n ] /A[ i ] [ i ] ;
115
x[ i ]
116
= x[ i ]
x_ ;
117
/
CALCULA O CRITERIO DE PARADA.
O
/
max = f a b s ( x [ 0 ] v e t o r _ a u x [ 0 ] ) ;
118
119
120
121
122
for
123
124
( i
if
125
126
127
128
for
129
130
131
aux
( i
1;
<
n;
= x[ i ]
0;
aux ;
<
n;
vetor_aux [ i ]
i ++){
= x[ i ];
132
133
fprintf
134
for
135
136
137
( i
( output ,
0;
fprintf
<
"%d " ,
n;
k) ;
i ++){
( output ,
x[ i ]) ;
138
139
fprintf
140
( output ,
max ) ;
141
142
for
f p r i n t f ( output ,
143
144
145
146
i ++){
vetor_aux [ i ] ;
( i
0;
<
f p r i n t f ( output ,
i ++){
i +1 ,
x[ i ]) ;
}
}
Mtodo de Gauss-Seidel
= 4 Area
Pode-se utilizar o cdigo dessa forma, que simples para todos lerem.
Vc pode colcocar as gura de vrios jeitos, de gura simples como a gura 2
(1)
I1
0
1.109
1.261
1.233
1.158
1.172
1.208
1.202
1.184
1.187
1.196
1.194
1.190
1.191
1.193
1.193
1.191
1.192
1.192
1.192
1.192
1.192
1.192
1.192
1.192
1.192
1.192
1.192
1.192
1.192
I2
I3
0
0.925
0.585
0.648
0.814
0.784
0.702
0.717
0.757
0.750
0.730
0.734
0.743
0.741
0.737
0.738
0.740
0.739
0.738
0.738
0.739
0.739
0.739
0.739
0.739
0.739
0.739
0.739
0.739
0.739
0
0.000
0.185
0.676
0.585
0.344
0.388
0.507
0.485
0.427
0.438
0.466
0.461
0.447
0.449
0.456
0.455
0.452
0.452
0.454
0.454
0.453
0.453
0.453
0.453
0.453
0.453
0.453
0.453
0.453
Erro
0.109244
0.184716
0.490883
0.166715
0.013715
0.044510
0.118286
0.040173
0.003305
0.010726
0.028503
0.009680
0.000796
0.002584
0.006868
0.002333
0.000192
0.000623
0.001655
0.000562
0.000046
0.000150
0.000399
0.000135
0.000011
0.000036
0.000096
0.000033
0.000003
Figura 3: Grupos
Voc deve tambm por tabelas para mostrar seus dados. Para converter uma tabela do Excel/Calc para uma
do Latex use este site http://www.acsu.bualo.edu/ gregoryt/exceltolatex.html .
De qualquer modo, Bom EP!