Vous êtes sur la page 1sur 14

Alguns métodos numéricos em MATLAB

16 de Outubro de 2008

1 / 14
Conteúdo
1 Descrição
2 Operações com vectores e matrizes
3 Decomposição LU e sistemas de equações lineares com
matrizes densas e esparsas
4 Decomposição de Cholesky e sistemas de equações lineares
com matrizes simétricas densas e esparsas
5 Decomposição QR
6 Mı́nimos quadrados lineares: equações normais e
decomposição QR
7 Decomposição em valores singulares, mı́nimos quadrados
lineares e número de condição na norma ℓ2
8 Estimador do número de condição na norma ℓ1
9 Método dos gradientes conjugados para sistemas de equações
lineares
10 Interpolação polinomial
11 Equações não lineares: métodos de Newton e da secante
12 Programação linear: método simplex
2 / 14
Descrição

Software de cálculo numérico


Programa-base sucessivamente aumentado pela incorporação
de toolboxes especı́ficas (Optimização, Processamento de
Sinal, Finanças, ...)
Permite ao utilizador abstrair-se dos detalhes técnicos e
concentrar-se no seu problema
Versões mais recentes dispõem de interface bastante amigável

3 / 14
Operações com vectores e matrizes

Atribuição
ˆ ˜
Vector-linha a= 12 3 −4
3 >> a = [ 1 3 -4 ]
1
Vector-coluna b = 4 −2 5 >> b = [ 1; -2; 3/5 ]
3
2 5 3
1 1 2
Matriz A=4 3 5 8 5 >> A = [ 1 1 2; 3 5 8; 13 21 34 ]
13 21 34

Operações com vectores e matrizes


Transposição: >> c = a’
Soma: >> z = b + c
Produto interno: >> x = b’ * c
Produto de matrizes >> d = A * c
Norma ℓ2 : >> norm(c), >> norm(A)
Norma ℓ1 : >> norm(c,1), >> norm(A,1)
Norma ℓ∞ : >> norm(c,inf), >> norm(A,inf)

4 / 14
Decomposição LU

Implementação
Matrizes densas com escolha parcial de pivot
Matrizes esparsas com escolha limite de pivot e critério de Markowitz

Aplicação em matrizes densas


2 3 2 3 >> A=[9 1 1; 1 9 1; 1 1 9];
9 1 1 11
>> [L,U,P]=lu(A);
A=4 1 9 1 5 , b = 4 11 5
>> b=[11 11 11]’;
1 1 9 11
>> x=A \ b;

Aplicação em matrizes esparsas


2 −1 2 3 >> load esparsa1.dat;
2 3 2 3
6 3 3 7 6 6 7 >> S=spconvert(esparsa1);
S = 6 −1 4 5 7, b = 6 8 >> [L,U,P,Q] = lu(S);
6 7 6 7
7
4 2 5 5 4 7 5 >> b=[3 6 8 7 10]’;
4 6 10 >> x=S \ b;

5 / 14
Decomposição de Cholesky

Descrição
Para matrizes SPD densas e esparsas; se a matriz não for simétrica
positiva definida, termina com uma mensagem de erro.

Aplicação
>> A=[9 1 1; 1 9 1; 1 1 9];
>> b=[11 11 11]’;
>> R=chol(A);
>> y = R’ \ b;
>> x = R \ y

Resolução do sistema Ax = b
>> x = A \ b

6 / 14
Decomposição QR

Descrição
Matrizes densas: fornece as matrizes Q e R
Matrizes esparsas: fornece apenas a matriz R, sendo possı́vel
implementar o método das equações semi-normais para
resolver Ax = b com A = QR:
1 Calcular b = AT b;
2 Resolver R T y = b e Rx = y .

Aplicação
>> R=qr(S);
>> b1 = S’*b;
>> y=R’\b1;
>> x=R\y

7 / 14
Mı́nimos quadrados lineares

Exemplo

  
1 2   1
x1
Bx = b com B = 2 3 , x =
  ,b = 1 

x2
3 5 1

Métodos de resolução
Equações normais:
>> x = (B’*B)\(B’*b)
Decomposição QR:
>> [m,n]=size(B);
>> [Q,R]=qr(B);
>> R=R(1:n,:);
>> bb=Q’*b;
>> x=R\bb(1:n)

8 / 14
Decomposição em valores singulares

Aplicação
>> [U,S,V] = svd(A)

em que S é uma matriz diagonal cujos elementos diagonais são os


valores singulares de A por ordem decrescente, e U e V são
matrizes unitárias tais que A = USV T .

Aplicação ao cálculo do número de condição ℓ2


>> cond(A,2)

ou

>> max(svd(A))/min(svd(A))

9 / 14
Estimador do número de condição ℓ1

Aplicação
Estimador de Hager:
>> condest(A)
Cálculo de cond1 (A):
>> cond(A,1)

10 / 14
Método dos gradientes conjugados para sistemas de
equações lineares

Exemplo
Ax = b com
   
9 1 1 11
A =  1 9 1  , b =  11 
1 1 9 11

Aplicação
Sem precondicionamento:
>> x=pcg(A,b,tol,maxit);
Com precondicionamento diagonal:
>> x=pcg(A,b,tol,maxit,diag(diag(A)));

11 / 14
Interpolação polinomial
Exemplo
Suponhamos que pretendemos obter o polinómio interpolador da
função f dada por
xi −2 −1 0 1 2
yi = f (xi ) 1 0 1 0 1

Aplicação
>> X = -2:2
>> Y = [1 0 1 0 1];
>> P = lagrangepoly(X,Y);

Resultado
Obtém-se P = (0.3333, 0, −1.3333, 0, 1.0000), pelo que o
polinómio interpolador é
1 4
P(x) = x 4 − x 2 + 1
3 3 12 / 14
Equações não lineares

Exemplo
f (x) = 0 com f (x) = x 3 − 2x 2 + 2x − 1

Construção de ficheiro funcao.m


function F=funcao(x)
F=x^3-2*x^2+2*x-1

Aproximação da solução
método de Newton:
>> x=newtsol(x0,@funcao,tolabs,tolrel);
método da secante:
>> x=secant(x0,@funcao,tolabs,tolrel);

13 / 14
Programação Linear

Exemplo
Minimize x1 + x2 + x3
s.a. x1 + x2 + 2x3 = 4
x1 + x2 + 3x3 = 5
x1 , x2 , x3 ≥ 0

Aplicação
>> c=[1 1 1]’;
>> A=[1 1 2; 1 1 3];
>> b=[4 5]’;
>> lb=zeros(3,1);
>> x=linprog(c,[],[],A,b,lb,[]);

14 / 14

Vous aimerez peut-être aussi