Escolar Documentos
Profissional Documentos
Cultura Documentos
Luı́sa Morgado
Para os resolver:
Métodos directos: Metodo de eliminação de Gauss, regra de
Cramer, entre outros.
Metodos iterativos: Método de Jacobi e método de
Gauss-Seidel, entre outros.
O método de eliminação de Gauss pode conduzir a soluções
erróneas devido aos erro de arredondamento e sua propagação.
Exemplo
O sistema de equações lineares
0.003000x1 + 59.14x2 = 59.17
5.291x1 − 6.130x2 = 47.78
|1.0−1.001|
ou seja, um pequeno erro em x2 : rx2 = 1.0
= 0.001 (0.1%) resultou num
|10.0−(−10.0)|
grande erro em x1 : rx1 = 10.0
= 2 (200%)
Pesquisa de pivot
Nota: A pesquisa total de pivot é a técnica que permite uma maior redução dos erros
de arredondamento. Contudo, requer um maior tempo computacional, não sendo por
isso a mais utilizada.
Exemplo
4 2 0
A matriz A = −2 3 1 não é estritamente diagonal dominante por linhas
1 0 2
pois |3| = | − 2| + |1|.
Mas é estritamente diagonal dominante por colunas uma vez que |4| > | − 2| + |1|,
|3| > |2| + |0| e |2| > |1| + |0|.
n
!1
X 2
kxk2 = |xi |2
i=1
Exemplo
T
Sendo x = −1 2 0 ,
Exemplo
Consideremos a seguinte matriz:
1 2 −1
A= 0 3 −1
5 −1 −1
P3
i =1 |a1j | = 1 + 2 + 1 = 4
Pj=1
3
i =2 j=1 |a2j | = 3 + 1 = 4 =⇒ ||A||∞ = 7
P3
i =3 j=1 |a3j | = 5 + 1 + 1 = 7
P3
j =1 |ai1 | = 1 + 5 = 6
Pi=1
3
j =2 i=1 |ai2 | = 2 + 3 + 1 = 6 =⇒ ||A||1 = 6
P3
i=1 |ai3 | = 3
j =3
Exemplo
Consideremos o sistema
1.0001x1 + 2x2 = 3.0001
x1 + 2x2 = 3
Métodos iterativos
e (k) = x ∗ − x (k)
x (k) = Mx (k−1) + c
x (k) = Mx (k−1) + c e x ∗ = Mx ∗ + c
Então
e (k) = x ∗ − x (k) = M x ∗ − x (k−1) = Me (k−1)
= M 2 x ∗ − x (k−2) = M k x ∗ − x (0) = M k e (0) , k = 1, 2, . . . .
Fazendo k → ∞, obtém-se lim e (k) = 0, ou seja, o método converge qualquer que seja
k
a aproximação inicial x (0) .
O método iterativo converge para qualquer x (0) se e só se ρ(M) < 1.
Se ||M|| < 1 então o método iterativo converge qualquer que seja a a proximação
inicial x (0) , e tem-se
||x ∗ − x (n) || ≤ ||M||n ||x ∗ − x (0) ||
||M||n
||x ∗ − x (n) || ≤ ||x (1) − x (0) ||
1 − ||M||
Dem.: É fácil concluir que ||e (k) || ≤ ||M||k ||e (0) ||, k = 1, 2, . . .
Como ||M|| < 1, então lim ||e (k) || = 0, o que prova a convergência do método
k→+∞
iterativo.
Para provar a segunda fórmula de majoração do erro, fazemos:
m
X m
X
x (m) − x (n) = x (j) − x (j−1) ⇒ ||x (m) − x (n) || ≤ ||x (j) − x (j−1) ||.
j=n+1 j=n+1
Por outro lado x (j) − x (j−1) = M (j−1) ||x (1) − x (0) ||, donde
m
X m−n−1
X
(m) (n) j−1 (1) (0) n j
||x −x || ≤ ||M|| ||x −x || = ||M|| ||M|| ||x (1) − x (0) ||
j=n+1 j=0
∞
X ||M||n
≤ ||M||n ||M||j ||x (1) − x (0) || = ||x (1) − x (0) |
j=0
1 − ||M||
Critérios de paragem
isto é
(k) (k−1)
e ≤ ||M|| e , k = 1, 2, . . .
Método de Jacobi
−1 −1
Ax = b ⇐⇒ (D − L − U)x = b ⇐⇒ Dx = (L + U)x = b ⇐⇒ x = D (L + U)x + D b
isto é
(k) −1 (k−1) −1
x =D (L + U) x +D b,
| {z }
M
M é a matriz de iteração.
Nota: Para que o método iterativo seja aplicável, temos que ter aii 6= 0, ∀i. Se ∃i tal que aii = 0, temos que
Exemplo
Consideremos o sistema cuja solução exacta sabemos ser x = (1, 1, 1).
10x1 + x2 + x3 = 12
x1 − 5x2 + 3x3 = −2
x1 + x2 + 3x3 = 5
10 0 0 0 0 0 0 −1 −1
D= 0 −5 0 ; L = −1 0 0 ; U= 0 0 −2
0 0 3 −1 −1 0 0 0 0
1 1 12
0 − 10 − 10 10
−1 1 2 e d = D −1 b = 2
M=D (L + U) = 5
0 5 5
− 31 − 31 0 5
3
No scilab:
Exemplo
Exercı́cio 37 dos problemas propostos:
D=[2 0;0 3];L=[0 0;-1 0];U=[0 -0.5;0 0];b=[2.5;0.5];
M=inv(D)*(L+U);B=inv(D)*b;x0=[5/4;-1/4];it=0;tol=1;
while tol>5*10^(-2), xi=M*x0+B;it=it+1;printf(’it=%d\n’,it);
Ab=abs(x0-xi);// abs(A) devolve a matriz cujas entradas s~
ao o módulo das
entradas de A
tol=max(Ab); //max(A) devolve a maior entrada da matriz A
x0=xi;
printf(’xi=%0.8f\n’,xi), end
Método de Gauss-Seidel
Ax = b ⇐⇒ x = (D − L)−1 Ux + (D − L)−1 b,
o que é equivalente a
−1
Dx (k) = Lx (k) +Ux (k−1) +b ⇔ x (k) = D
| {z Lx (k)} + |D −1 Ux
{z
(k−1) −1
} +D b
novo velho
Exemplo
Retomemos o exemplo do sistema
10x1 + x2 + x3 = 12
x1 − 5x2 + 3x3 = −2 .
x1 + x2 + 3x3 = 5
No scilab:
Exemplo
Exercı́cio 37 dos problemas propostos:
D=[2 0;0 3];L=[0 0;-1 0];U=[0 -0.5;0 0];b=[2.5;0.5];
M=inv(D-L)*U;B=inv(D-L)*b;x0=[5/4;-1/4];it=0;tol=1;
while tol>5*10^(-2), xi=M*x0+B;it=it+1;printf(’it=%d\n’,it);
Ab=abs(x0-xi);
tol=max(Ab);
x0=xi;
printf(’xi=%0.8f\n’,xi), end
Exemplo
O sistema não linear
x1 + x2 + x3 = 4
x1 x2 + x1 x3 + x2 x3 = 1
x1 x2 x3 = −6
T
pode ser escrito na forma F (x) = 0, onde x = x1 x2 ··· xn e
f1 (x1 , x2 , x3 ) x1 + x2 + x3 − 4
F (x) = f2 (x1 , x2 , x3 ) = x1 x2 + x1 x3 + x2 x3 − 1
f3 (x1 , x2 , x3 ) x1 x2 x3 + 6
Cálculo de x (m+1)
Dada uma aproximação x (0) , as iteradadas x (m+1) , m = 0, 1, . . . são calculadas através
do esquema iterativo
−1
x (m+1) − x (m) = − J x (m) F x (m) .
| {z }
d
J x (m) d = −F x (m) ,
x (m+1) = x (m) + d.
Exemplo
y − x 2 + 2x = 0.5
1.5
,
x 2 + 4y 2 = 4 1
0.5
Seja,
y − x 2 + 2x − 0.5
f1 (x, y )
F (x, y ) = = .
f2 (x, y ) x 2 + 4y 2 − 4
A matriz Jacobiana de F é
−2x + 2 1
J(X ) = J(x, y ) =
2x 8y
2
y (m) − x (m) + 2x (m) − 0.5
!
−2x (m) + 2 1
(m) (m)
J X d = −F X ⇔ d = − 2 2 .
2x (m) (m)
8y x (m) + 4 y (m) −4
!T
0 1
Começando com a aproximação inicial X (0) = |{z} |{z} , calculemos X (1) .
x (0) y (0)
Fazendo m = 0 no esquema iterativo:
2 !
−2x (0) + 2 y (0) − x (0) + 2x (0) − 0.5
1
d =− 2 2 .
2x (0) 8y (0) x (0) + 4 y (0) − 4
2 1 −0.5
⇔ d =− . ⇔ d1 = −0.25, d2 = 0
0 8 |{z} 0
T
d1 d2
logo
x (1) x (0)
d1
X (1) = X (0) + d ⇔ = +
y (1) y (0) d2
x (1)
0 −0.25
⇔ = +
y (1) 1 0
x (1)
−0.25
⇔ =
y (1) 1
No scilab:
Exemplo
Exercı́cio 42 dos problemas propostos:
function z=J(x,y), z=[3*x^2-4*x-2 -1;1 -1], endfunction;
function w=F(x,y), w=[x^3-2*x^2-2*x-y+2;x-y], endfunction;
it=0;tol=1;x0=0;y0=0;
while tol>10^(-8),
xi=[x0;y0]-inv(J(x0,y0))*F(x0,y0);it=it+1;printf(’it=%d\n’,it);
Ab=abs([x0;y0]-xi);
tol=max(Ab);
x0=xi(1,1);y0=xi(2,1);
printf(’xi=%0.8f\n’,xi), end