Escolar Documentos
Profissional Documentos
Cultura Documentos
O Matlab tem o operador \ que permite com uma sintaxe simples resolver sistemas de
equaes lineares de qualquer tipo.
Se quisermos resolver o sistema Ax = b basta fazer x=A\b. Se o sistema for determinado o mtodo
que utilizado idntico factorizao LU dada. Vamos, no entanto, ver outras funes que nos
fornecem a prpria decomposio.
Nota:
Faa o download, com copy-past, dos seguintes cheiros (com funes Matlab) do Moodle (directrio sistemas de equaes lineares) para a sua rea de trabalho: jacobi.m; seidel.m
1
2
A=
1
3
1
2
2
1
1
1
1
1
1
1
,
2
1
Matlab
4
6
b=
6 .
6
Resoluo:
xx = (1.0000 , 1.0000 , 1.0000 , 1.0000 )
Nota: Como a resposta aparece com c.d. a soluo no inteira. Se calcularmos a
diferena entre o valor obtido e a soluo exacta (1, 1, 1, 1), usando o comando Matlab
dif=xx-[1;1;1;1] vamos obter o valor
dif==
1.0e-015 *
0
-0.1110
-0.2220
0.2220
Resultados:
L =
1.0000
0
0.3333 1.0000
0.3333 0.4000
0.6667 0.8000
0
0
1.0000
-0.5000
0
0
0
1.0000
U =
P =
0
0
1
0
0
0
0
1
0
1
0
0
1
0
0
0
x =
y =
6.0000
4.0000
0.4000
-1.0000
1.0000
1.0000
1.0000
1.0000
1
2
1
2
1
1
1
1
1
2
1
1
>> Aperm=P*A
Aperm =
3
1
1
2
1
1
2
2
1
1
1
1
1
2
1
1
o que mostra que as operaes executadas quer pelo operador \ quer pela funo lu
seguida dos 2 sistemas triangulares so as mesmas. O operador \ usa o mtodo de Gauss
com escolha parcial de pivot e a funo lu usa a decomposio de Doolitle com escolha
parcial de pivot. Logo o operador \ pode ser usado quando pretendemos resolver um
s sistema com a matriz A. A funo lu mais vantajosa quando pretendemos resolver
vrios sistemas com a mesma matriz.
1.6. Calcule as normas 1,2 e da matriz do sistema. Porque obteve resultados diferentes?
Resoluo:
norm(A,1)= 7, norm(A)(ou norm(A,2))=5.7016, norm(A,Inf)= 6.
Uma funo pode ser designada por norma desde que respeite as respectivas condies
(v. pp. 100 da sebenta). H uma innidade de possibilidades, sendo as normas indicadas (v pp.101) as mais usadas para vectores e matrizes fornecendo valores diferentes.
Geralmente o valor da componente maior que mais contribui para o valor da norma.
Este facto, faz com que por vezes as normas s digam o que acontece s componentes
maiores em valor absoluto.
1
0
0
0
2.9444 6.2222 2.9444
A=
0
2.9444 6.2222 2.9444
0
0
0
1
Resoluo:
Qual a soluo que obteve? x= 0.018500000000000, 0.009230809998256, 0.038739487152272,
0.148100000000000
Atendendo condio de A = 13.1008 temos conana em 15 a.s. desta soluo. Porque cond(A) 101 , esperamos perder um a.s. dos cerca de 16 a.s. com que o Matlab
trabalha.
Nota: A soluo apresentada com 15 c.d. para cada componente e no com 15 a.s.
pois, tal como referimos anteriormente, quando se trabalha com normas s camos
praticamente com a a informao da componente maior. Como o erro relativo dado
pela norma do erro absoluto a dividir pela norma do vector x, apesar de no sabermos
qual a componente que tem maior erro, sabemos que a componente maior de x a
ltima. Assim, na pior das hipteses, nessa componente que temos o maior erro
absoluto que nos permite ter conana em 15 a.s.. Como a ordem de grandeza dessa
componente das dcimas, os 15 a.s. so 15 c.d. e por essa razo s podemos garantir
15 c.d. para as restantes componentes.
2.2. Faa
format short
[xj,k,rerr,C,Y]=jacobi(A,b,[0;0;0;0],1.e-3,20,1);
para resolver Ax=b pelo mtodo de Jacobi, usando para ponto x0 o vector nulo e usando
kxi x(i1) k
para critrio de paragem
< 1.e 3 ou, no mximo, 20 de iteraes.
kxi k
O programa fornece a soluo em xj, obtida em k iteraes. Fornece tambm rerr=
kxk x(k1) k
, C a matriz da frmula de recorrncia de Jacobi e a tabela Y com todos
kxk k
os iterados. Na 1a coluna x0 e na ltima linha
xi x(i1)
.
Resoluo:
E obteve-se o quadro:
iter #
0
1
2
3
x1 = 0.000000 0.018500 0.018500 0.018500
x2 = 0.000000 -0.017855 -0.026000 0.003165
x3 = 0.000000 -0.035711 0.025922 0.022068
x4 = 0.000000 0.148100 0.148100 0.148100
||xN-xV|| 0.0 0.148100 0.061633 0.029165
iter #
10
4
0.018500
0.001342
0.035869
0.148100
0.013801
11
5
0.018500
0.007873
0.035006
0.148100
0.006531
6
0.018500
0.007464
0.038097
0.148100
0.003090
7
0.018500
0.008927
0.037904
0.148100
0.001462
x1 =
x2 =
x3 =
x4 =
||xN-xV||
0.018500
0.008835
0.038596
0.148100
0.000692
0.018500
0.009163
0.038552
0.148100
0.000327
0.018500 0.018500
0.009142 0.009216
0.038707 0.038698
0.148100 0.148100
0.000155 0.000073
O mtodo
convergente
. Parou ao m de 11 iteraes pelo critrio de paragem
rerr =
x(11) x(10)
103 que garante que da 10a para a 11a iterao houve
x(11)
10
0.5024
0.5714
0.5702
0.5705
0.5652
0.5667
0.5430
0.5496
0.4436
0.4732
7.44e-2
3.52e-2
1.66e-2
7.87e-3
3.69e-3
1.75e-3
7.94e-4
3.80e-4
1.45e-4
7.33e-5
O valor de K = 0.58 e
x x(n)
0.58
x(n) x(n1)
.
Faa
Erro=K*Y(5,k+1)
Concluso: o valor estimado (0.43 104 ) para o erro, neste caso, alm de ser
bastante prximo do erro cometido (0.42 104 ), tambm um limite superior do
para resolver Ax=b pelo mtodo de Gauss-Seidel, usando para ponto x0 o vector nulo e
kxi x(i1) k
usando para critrio de paragem
< 1.e3 ou, no mximo, 20 de iteraes.
kxi k
O programa fornece a soluo em xj, obtida em k iteraes. Fornece tambm rerr=
kxk x(k1) k
e a tabela Y com todos os iterados. Na 1a coluna x0 e na ltima linha
xk k
k
i
x x(i1)
.
Resoluo:
E obteve-se o quadro:
iter #
0
1
2
3
x1 = 0.000000 0.018500 0.018500 0.018500
x2 = 0.000000 -0.009101 -0.028038 0.000885
x3 = 0.000000 -0.040018 0.021104 0.034790
x4 = 0.000000 0.148100 0.148100 0.148100
||xN-xV|| 0.0 0.148100 0.061121 0.028923
4
0.018500
0.007362
0.037855
0.148100
0.006477
5
0.018500
0.008812
0.038541
0.148100
0.001450
6
0.018500
0.009137
0.038695
0.148100
0.000325
7
0.018500
0.009210
0.038730
0.148100
0.000073
O mtodo
convergente
. Parou ao m de 7 iteraes pelo critrio de paragem
rerr =
x(7) x(6)
103 que garante que da 6a para a 7a iterao houve uma
x(7)
Nota: se olharem para a ltima linha da tabela (ou Y ) vem que, nas ltimas iteraes,
so precisas um pouco mais do que 3 iteraes para a soluo ganhar 2 a.s.. Deste
modo, v s aproxima bem o erro at 5a iterao. Nas primeiras iteraes parece que
o mtodo ainda no estabilizou.
i
1
2
3
4
5
6
KR
0.5317
0.6094
0.2878
0.2853
0.2741
0.2239
v
7.87e-002 3.72e-002 8.32e-003 1.85e-003 3.97e-004 7.27e-005
- O valor de K = 0.3 e
x x(n)
0.3
x(n) x(n1)
.
- Faa
Erro=K*Y(5,k+1)
0.0993,
0)
Concluso: o valor estimado (0.22 104 ) para o erro, neste caso, alm de ser bastante
prximo do erro cometido (0.21 104 ), tambm um limite superior do erro, mas
isso no podemos garantir sempre. (Usou-se a norma ).