Use o botão abaixo para reportar erros ou dar sugestões.

Cálculo Numérico - Versão Scilab

4.6 Condicionamento de sistemas lineares


Quando lidamos com matrizes no corpo do números reais (ou complexos), existem apenas duas alternativas: i) a matriz é inversível; ii) a matriz não é inversível e, neste caso, é chamada de matriz singular. Ao lidar com a aritmética de precisão finita, encontramos uma situação mais sutil: alguns problema lineares são mais difíceis de serem resolvidos, pois os erros de arredondamento se propagam de forma mais significativa que em outros problemas. Neste caso falamos de problemas bem-condicionados e mal-condicionados. Intuitivamente falando, um problema bem-condicionado é um problema em que os erros de arredondamento se propagam de forma menos importante; enquanto problemas mal-condicionados são problemas em que os erros se propagam de forma mais relevante.

Um caso típico de sistema mal-condicionado é aquele cujos coeficiente estão muito próximos ao de um problema singular. Considere o seguinte exemplo:

Exemplo 4.6.1. Observe que o sistema

71 41 λ 30 x y = 100 70 (4.157)

é impossível quando λ = 71×30 41 51,95122.

Considere os próximos três sistemas:

a)
71 41 51 30 x y = 100 70 , com solução 103 -103 ,
b)
71 41 52 30 x y = 100 70 , com solução -65 115 ,
c)
71 41 52 30 x y = 100,4 69,3 , com solução -85,35 150,25 .

Pequenas variações nos coeficientes das matrizes fazem as soluções ficarem bem distintas, isto é, pequenas variações nos dados de entrada acarretaram em grandes variações na solução do sistema. Quando isso acontece, dizemos que o problema é mal-condicionado.

Precisamos uma maneira de medir essas variações. Como os dados de entrada e os dados de saída são vetores (ou matrizes), precisamos introduzir as definições de norma de vetores e matrizes.

4.6.1 Norma de vetores


Definimos a norma Lp, 1 p , de um vetor em v = (v1,v2,,vn) n por:

vp := i=1n v i p 1p = v 1 p + v 2 p + + v n p 1p,1 p < . (4.158)

Para p = , definimos a norma L (norma do máximo) por:

v = max 1jn{vj}. (4.159)

Proposição 4.6.1 (Propriedades de normas). Sejam dados α um escalar e os vetores u,v n. Então, para cada 1 p , valem as seguintes propriedades:

  • up = 0 u = 0.
  • αup = |α|up.
  • u + vp up + vp (desigualdade triangular).
  • up u quando p .

Demonstração. Demonstramos cada item em separado.
  • Se u = 0, então segue imediatamente da definição da norma Lp, 1 p , que up = 0. Reciprocamente, se u = 0, então, para cada i = 1, 2,,n, temos:
    ui max 1jn{|uj|} = u = 0 ui = 0. (4.160)

    Isto é, u = 0. Agora, se up = 0, 1 p < , então:

    0 = upp := i=1n u i p n u u = 0. (4.161)

    Logo, pelo resultado para a norma do máximo, concluímos que u = 0.

  • Segue imediatamente da definição da norma Lp, 1 p .
  • Em construção ...
  • Em construção ...

Exemplo 4.6.2. Calcule a norma L1, L2 e L do vetor coluna v = (1, 2,-3, 0).

Solução. v1 = 1 + 2 + 3 + 0 = 6 (4.162) v2 = 1 + 22 + 32 + 02 = 14 (4.163) v = max{1,2,3,0} = 3 (4.164)

No Scilab podemos computar normas Lp’s de vetores usando o comando norm. Neste exemplo, temos:

-->norm(v,1), norm(v,’inf’), norm(v,2)  
 ans  =  
    6.  
 ans  =  
    3.  
 ans  =  
    3.7416574

4.6.2 Norma de matrizes


Definimos a norma induzida Lp de uma matriz A = [ai,j]i,j=1n,n da seguinte forma:

Ap = sup vp=1Avp, (4.165)

ou seja, a norma p de uma matriz é o máximo valor assumido pela norma de Av entre todos os vetores de norma unitária.

Temos as seguintes propriedades, se A e B são matrizes, I é a matriz identidade, v é um vetor e λ é um real (ou complexo): Ap = 0A = 0 (4.166) λAp = |λ|Ap (4.167) A + Bp Ap + Bp(desigualdade do triângulo) (4.168) Avp Ap vp (4.169) ABp ApBp (4.170) Ip = 1 (4.171) 1 = Ip = AA-1 p ApA-1 p(se A é inversível) (4.172)

Casos especiais: A1 = max j=1n i=1n a ij (4.173) A2 = max{|λ| : λ σ(AA*)} (4.174) A = max i=1n j=1n a ij (4.175)

onde σ(M) é o conjunto de autovalores da matriz M.

Exemplo 4.6.3. Calcule as normas 1, 2 e da seguinte matriz:

A = 3 - 5 7 1 - 2 4 - 8 1 - 7 (4.176)

Solução. A1 = max{12, 8, 18} = 18 (4.177) A = max{15, 7, 16} = 16 (4.178) A2 = max{0,5865124, 21,789128, 195,62436} = 13,98657 (4.179)

No Scilab podemos computar normas Lp’s de matrizes usando o comando norm. Neste exemplo, temos:

-->A = [3 -5 7;1 -2 4;-8 1 -7];  
-->norm(A,1), norm(A,’inf’), norm(A,2)  
 ans  =  
    18.  
 ans  =  
    16.  
 ans  =  
    13.986578

4.6.3 Número de condicionamento


O condicionamento de um sistema linear é um conceito relacionado à forma como os erros se propagam dos dados de entrada para os dados de saída. No contexto de um sistema linear Ax = y, temos que a solução x depende dos dados de entrada y. Consideremos, então, o problema

A(x + δx) = y + δy (4.180)

Aqui, δx representa uma variação (erro) em x e δy representa uma variação em y (erro). Temos:

Ax + Aδx = y + δy (4.181)

e, portanto,

Aδx = δy. (4.182)

Queremos avaliar a razão entre o erro relativo em x e o erro relativo em y, isto é δx x δy y = δx x y δy (4.183) = A-1δ y x Ax δy (4.184) A-1δ y x A x δy (4.185) = AA-1 (4.186)

Definição 4.6.1 (Número de condicionamento). O número de condicionamento de uma matriz não-singular A é

kp(A) := ApA-1 p (4.187)

Observação 4.6.1.

  • O número de condicionamento depende da norma escolhida.
  • O número de condicionamento da matriz identidade é 1.
  • O número de condicionamento de qualquer matriz inversível é maior ou igual a 1.

Exemplo 4.6.4. No Exemplo 4.6.1 estudamos a solução de sistemas lineares com as seguintes matrizes de coeficientes:

A1 = 71 41 51 30 eA2 = 71 41 52 30 . (4.188)

Calcule os números de condicionamento destes sistemas na norma Lp para p = 1, 2 e .

Solução. Para a matriz A1, temos:

k1(A1) := A1A1-1 350,36, k2(A1) := A2A2-1 262,12, k(A1) := AA-1 350,36. (4.189)

Para a matriz A2, temos:

k1(A2) := A11A1-1 1 6888,0, k2(A2) := A12A1-1 2 5163,0, k(A2) := A1A1-1 6888,0. (4.190)

No Scilab, podemos computar estes números de condicionamento para a matriz A1 com o seguinte código:

A1 = [71 41;51 30];  
cond(A1,1)  
cond(A1,2)  
cond(A1,’inf’)

e analogamente para a matriz A2.

Exercícios


E 4.6.1. Calcule o valor de λ para o qual o problema

71x + 41y = 10 λx + 30y = 4 (4.191)

é impossível, depois calcule os números de condicionamento com norma 1,2 e quando λ = 51 e λ = 52.

Resposta.

λ = 71×30 41 51.95122, para λ = 51: k1 = k = 350.4, k2 = 262.1. Para λ = 52: k1 = k = 6888, k2 = 5163.

E 4.6.2. Calcule o número de condicionamento da matriz

A = 3 - 5 7 1 - 2 4 - 8 1 - 7 (4.192)

nas normas 1, 2 e .

Resposta.

k1(A) = 36, k2(A) = 18,26, K(A) = 20,8.

E 4.6.3. Calcule o número de condicionamento das matrizes

71 41 52 30 (4.193)

e

1 2 3 2 3 4 4 5 5 (4.194)

usando as normas 1, 2 e .

Resposta.

k1 = k = 6888,k2 = 26656567 e k1 = 180,k2 = 128,40972 e k = 210

E 4.6.4. Usando a norma 1, calcule o número de condicionamento da matriz

A = 1 2 2 + ε 4 (4.195)

em função de ε quando 0 < ε < 1. Interprete o limite ε 0.

Resposta.

18 ε + 3. Quando ε 0+, a matriz converge para uma matriz singular e o número de condicionamento diverge para + .

E 4.6.5. Considere os sistemas:

100000x - 9999.99y = - 10 - 9999.99x + 1000.1y = 1 e 100000x - 9999.99y = - 9.999 - 9999.99x + 1000.1y = 1.01 (4.196)

Encontre a solução de cada um e discuta.

Resposta.

As soluções são [-0.00009900.0000098]T e [0.00980290.0990294]T . A grande variação na solução em função de pequena variação nos dados é devido ao mau condicionamento da matriz (k1 1186274.3).

Exemplo de implementação:

A=[1e5 -1e4+1e-2; -1e4+1e-2 1000.1]  
b1=[-10 1]’  
b2=[-9.999 1.01]’  
A\b1  
A\b2

E 4.6.6. Considere os vetores de 10 entradas dados por

xj = sen (j10),yj = j10zj = j10 - j10 3 6 ,j = 1,,10 (4.197)

Use o Scilabpara construir os seguintes vetores de erro:

ej = |xj - yj| |xj| fj = |xj - zj| xj (4.198)

Calcule as normas 1, 2 e de e e f

Resposta. 0,695; 0,292; 0,188; 0,0237; 0,0123; 0,00967

Exemplo de implementação:

J=[1:1:10]  
x=sin(J/10)  
y=J/10  
z=y-y.^3/6  
e=abs(x-y)./x  
f=abs(x-z)./x  
norm(e,1)  
norm(e,2)  
norm(e,’inf’)  
norm(f,1)  
norm(f,2)  
norm(f,’inf’)

Creative Commons License Este texto é disponibilizado nos termos da licença Creative Commons Atribuição-CompartilhaIgual 3.0 Não Adaptada (CC-BY-SA 3.0). Página gerada em 30/7/2018 às 13:16:34.

Informe erros ou edite você mesmo!