Aula Matlab Avancado
description
Transcript of Aula Matlab Avancado
-
1MQI 2104 - Processamento eAnlise de Sinais Digitais
Carlos Hall Sala 06 Ramal [email protected]
Processamento de Sinais
Anlise de Dados Interpolao Regresso e Ajuste de Curvas Integrao e Diferenciao Minimizao de Funes Processamento Simblico
Anlise de Dados
Variveis Aleatrias Gerao de Nmeros Aleatrios Mximos e mnimos Somas e Produtos Anlise Estatstica
Variveis Aleatrias
Muitas medies (seno todas) tm umelemento de aleatoriedade
Estatstica: ramo da Matemtica Aplicadaque envolve anlise, interpretao eapresentao de dados que incluemalgum grau de aleatoriedade ou incerteza
Estatstica Descritiva: resume oudescreve as caractersticas maisimportantes de um conjunto de dados
Variveis Aleatrias
Varivel Aleatria: Entidade matemtica que representa os
possveis valores que uma determinadamedida pode assumir para cada medio, ouobservao Varivel Aleatria Contnua: podem assumir
qualquer valor em um intervalo contnuo Varivel Aleatria Discreta: s pode assumir
alguns valores de um conjunto discreto
Variveis Aleatrias
Populao: todos os possveis valoresque uma varivel aleatria pode assumir
Amostra: Conjunto finito de medidas ouobservaes. Assumindo que foram feitas N observaes
de uma varivel aleatria, esta amostra podeser representada por um vetor x, comelementos x(n), n = 1, ..., N
-
2Variveis Aleatrias
Distribuio de Freqncia: Indica as freqncias relativas com que os
possveis valores da varivel aleatriaocorrem na populao
Caso discreto: Funo Distribuio deProbabilidades (PDF) x pode assumir os valores {X1, X2, ..., Xm} PDF de Xk:
( ) ( )kk XxPXPDF ==
Variveis Aleatrias
Distribuio de Freqncia: Indica as freqncias relativas com que os
possveis valores da varivel aleatria ocorremna populao
Caso contnuo: Funo Densidade deProbabilidades (pdf) x pode assumir qualquer valor no intervalo [-8 ,+8 ] pdf de X: uma funo f(X) tal que
( ) ( )= 21
21
X
X
dXXfXxXP ( ) XXf ,0 ( ) 1=+
dXXf
Gerao de Nmeros Aleatrios
Muitos problemas precisam usar nmerosaleatrios no desenvolvimento de uma soluo
Em alguns casos, so usados para simularsolues de um problema, repetindo-se asimulao diversas vezes (mtodo deMontecarlo)
Em outros casos, so usados para representarrudo, como o incidente em sinais de rdio
Matlab: Distribuio Uniforme Distribuio Normal
Gerao de Nmeros Aleatrios
Nmeros aleatrios so caracterizadospor suas distribuies de freqncia
Distribuio Uniforme: Distribuio (pdf) Constante ao longo de sua
faixa de variao, entre os valores mnimo emximo
X
f(X)
Xmin Xmax
Gerao de Nmeros Aleatrios
Distribuio Uniforme: Matlab: distribuio uniforme em [0,1] Funo rand Na verdade, so seqncias pseudo-
aleatrias A partir de uma semente, gera-se uma
seqncia A mesma semente gerar a mesma seqncia!
Intervalo Real: [2-53, 1-2-53]
Gerao de Nmeros Aleatrios
Matlab: rand: gera um nmero aleatrio distinto a
cada vez que chamada rand(n): gera uma matriz n x n de nmeros
aleatrios no intervalo [0,1] rand(m,n): gera uma matriz m x n de
nmeros aleatrios no intervalo [0,1]
-
3Gerao de Nmeros Aleatrios
Matlab: s = rand(state): retorna um vetor de estado, com
35 elementos que caracterizam o gerador denmeros aleatrios
rand(state,s): coloca o estado do gerador em s rand(state,0): coloca o gerador em seu estado
inicial rand(state,N): coloca o gerador em seu N-simo
estado rand(state,sum(100*clock)): coloca o gerador em
um estado diferente a cada instante
Gerao de Nmeros Aleatrios
Matlab (exemplo):
>> rand('state',0)>> set1 = rand(10,1);>> rand('state', 123)>> set2 = rand(10,1);>> [set1 set2]
ans =
0.9501 0.0697 0.2311 0.2332 0.6068 0.7374 0.4860 0.7585 0.8913 0.6368 0.7621 0.6129 0.4565 0.3081 0.0185 0.2856 0.8214 0.0781 0.4447 0.9532
Gerao de Nmeros Aleatrios
rand: distribuio uniforme em [0,1] Para obter distribuies uniformes em outros
intervalos [m,n] n + rand*(m-n)
>> data1 = 2*rand(1,500) + 2; [2,4]>> data2 = rand(1,500)+3; [3,4]>> subplot(2,1,1), plot(data1), axis([0 500 0 6])>> subplot(2,1,2), plot(data2), axis([0 500 0 6])
Gerao de Nmeros Aleatrios
Gerao de Nmeros Aleatrios
rand: simulao de v.a. discretas Combinao com funo floor() floor(): arredondamento para baixo ceil(): arredondamento para cima round(): arredondamento para o mais
prximo
Gerao de Nmeros Aleatrios
rand: simulao de v.a. discretas x pode assumir m valores {X1, X2, ..., Xm} com
mesma probabilidade Deseja-se observar N valores de x
x = floor(m*rand(1,N)+1)
-
4Gerao de Nmeros Aleatrios
rand: simulao de v.a. Discretas Exemplo: moeda (cara ou coroa) m=2 N = 50
x = floor(2*rand(1,50)+1);hist(x, [1 2])xlabel('1: cara, 2: coroa')ylabel('Frequencia')set(gcf, 'color', 'w')title('Histograma freq. abs. para 50 moedas')
Gerao de Nmeros Aleatrios
Gerao de Nmeros Aleatrios
rand: simulao de v.a. Discretas Exemplo: moeda (cara ou coroa) m=2 N = 1000
x = floor(2*rand(1,1000)+1);hist(x, [1 2])xlabel('1: cara, 2: coroa')ylabel('Frequencia')set(gcf, 'color', 'w')title('Histograma freq. abs. para 1000 moedas')
Gerao de Nmeros Aleatrios
Gerao de Nmeros Aleatrios
rand: simulao de v.a. Discretas Exemplo: dado de 6 faces m = 6 N = 100
x = floor(6*rand(1,100)+1);hist(x, [1:6])xlabel('Numero')ylabel('Frequencia')set(gcf, 'color', 'w')title('Histograma freq. abs. para 100 dados')
Gerao de Nmeros Aleatrios
-
5Gerao de Nmeros Aleatrios
rand: simulao de v.a. Discretas Exemplo: dado de 6 faces m = 6 N = 1000
x = floor(6*rand(1,1000)+1);hist(x, [1:6])xlabel('Numero')ylabel('Frequencia')set(gcf, 'color', 'w')title('Histograma freq. abs. para 1000 dados')
Gerao de Nmeros Aleatrios
Gerao de Nmeros Aleatrios
Distribuio Normal: Funo Densidade de Probabilidade (pdf)
segue a funo gaussiana:
( ) ( )22
222
1
=
x
exf
Representao: N(,)
Gerao de Nmeros Aleatrios
Distribuio Normal: Matlab: distribuio Normal N(0,1) Mdia zero Varincia Unitria
Funo randn Na verdade, so seqncias pseudo-
aleatrias A partir de uma semente, gera-se uma
seqncia A mesma semente gerar a mesma seqncia!
Gerao de Nmeros Aleatrios
Matlab: randn: gera um nmero aleatrio distinto a
cada vez que chamada randn(n): gera uma matriz n x n de nmeros
aleatrios com distribuio N(0,1) randn(m,n): gera uma matriz m x n de
nmeros aleatrios com distribuio N(0,1)
Gerao de Nmeros Aleatrios
Matlab: s = randn(state): retorna um vetor de estado, com
35 elementos que caracterizam o gerador denmeros aleatrios
randn(state,s): coloca o estado do gerador em s randn(state,0): coloca o gerador em seu estado
inicial randn(state,N): coloca o gerador em seu N-simo
estado randn(state,sum(100*clock)): coloca o gerador em
um estado diferente a cada instante
-
6Gerao de Nmeros Aleatrios
Matlab (exemplo):
>> randn('state',0)>> set3 = randn(10,1);>> randn('state', 123)>> set4 = randn(10,1);>> [set3 set4]
ans =
-0.4326 1.6056 -1.6656 -0.0416 0.1253 1.2127 0.2877 0.4977 -1.1465 -0.9253 1.1909 0.6648 1.1892 0.0013 -0.0376 -0.8141 0.3273 -0.7747 0.1746 -1.2441
Gerao de Nmeros Aleatrios
randn: distribuio Normal N(0,1) Para obter distribuies normais com outros
parmetros [,] + randn*
>> data3 = randn(1,500) + 3; [3,1]>> data4 = randn(1,500)*3 + 1; [1,3]>> subplot(2,1,1),plot(data3),axis([0 500 -10 10])>> subplot(2,1,2),plot(data4),axis([0 500 -10 10])
Gerao de Nmeros Aleatrios Mximos e mnimos
Funes max e min Funcionalidades ligeiramente diferentes de
acordo com os argumentos max(x), x=vetor: maior elemento de x max(X), X=matriz: vetor com o maior elemento
de cada coluna de x max(X,Y), X,Y=vetor ou matriz: vetor ou matriz
com mesmas dimenses, onde cada elemento o mximo entre os elementos correspondentesde X e Y
Mximos e mnimos
Funes max e min No exemplo anterior:
>> max(set1)ans = 0.95010000000000
>> max([set1 set2])ans = 0.95010000000000 0.95320000000000
>> max(set1,set2)
Mximos e mnimos
Funes max e min No exemplo anterior:
>> max(set1)ans = 0.95010000000000
>> max([set1 set2])ans = 0.95010000000000 0.95320000000000
>> max(set1,set2)
ans =
0.95010000000000 0.23320000000000 0.73740000000000 0.75850000000000 0.89130000000000 0.76210000000000 0.45650000000000 0.28560000000000 0.82140000000000 0.95320000000000
-
7Anlise de Dados
Variveis Aleatrias Gerao de Nmeros Aleatrios Mximos e mnimos Somas e Produtos Anlise Estatstica
Mximos e mnimos
Funes max e min min(x), x=vetor: menor elemento de x min(X), X=matriz: vetor com o menor
elemento de cada coluna de x min(X,Y), X,Y=vetor ou matriz: vetor ou
matriz com mesmas dimenses, onde cadaelemento o mnimo entre os elementoscorrespondentes de X e Y
Mximos e mnimos
Funes max e min No exemplo anterior:
>> min(set1)ans = 0.01850000000000
>> min([set1 set2])ans = 0.01850000000000 0.06970000000000
>> min(set1,set2)
Mximos e mnimos
Funes max e min No exemplo anterior:
>> min(set1)ans = 0.01850000000000
>> min([set1 set2])ans = 0.01850000000000 0.06970000000000
>> min(set1,set2)
ans =
0.06970000000000 0.23110000000000 0.60680000000000 0.48600000000000 0.63680000000000 0.61290000000000 0.30810000000000 0.01850000000000 0.07810000000000 0.44470000000000
Mximos e mnimos
Funes max e min: sintaxes alternativas [y,k] = max(x) y: maior elemento de x k: ndice do primeiro maior elemento de x
[y,k] = min(x) y: menor elemento de x k: ndice do primeiro menor elemento de x
Mximos e mnimos
Funes max e min: sintaxes alternativas Exemplo:>> v = [3 -2 4 -1 5 0];>> max(v)ans = 5>> [vmin, kmin] = min(v)vmin = -2kmin = 2
-
8Anlise de Dados
Variveis Aleatrias Gerao de Nmeros Aleatrios Mximos e mnimos Somas e Produtos Anlise Estatstica
Somas e Produtos
Suponha x um vetor de N elementos: sum(x): soma dos elementos do vetor x
prod(x): produto dos elementos do vetor x
( ) [ ]=
= Nk
kxxsum1
( ) [ ]=
= Nk
kxxprod1
Somas e Produtos
Suponha x um vetor de N elementos: cumsum(x): soma cumulativa dos elementos
do vetor x, uma seqncia (vetor)
prod(x): produto cumulativo dos elementosdo vetor x, uma seqncia (vetor)
[ ] [ ]( ) [ ]=
== nk
kxnxcumsumny1
[ ] [ ]( ) [ ]=
== nk
kxnxcumprodny1
Somas e Produtos
Suponha X uma matriz MxN: sum(X): vetor de N elementos contendo a
soma dos elementos de cada coluna de X prod(X): vetor de N elementos contendo o
produto dos elementos de cada coluna de X
cumsum(X): matriz MxN onde cada coluna a soma cumulativa da respectiva coluna de X
cumprod(X): matriz MxN onde cada coluna o produto cumulativo da respec. coluna de X
Somas e Produtos
Exemplo:
Matlab:>> N = 8;>> k =1:N;>> S = sum(k)S =
36>> N *(N+1)/2ans =
36
( )2
11
+==
NNkN
k
Soma dos Termos de uma P.G.
Somas e Produtos
Exemplo:
Matlab:>> nfact4 = prod(1:4)nfact4 =
24
>> nfact70 = prod(1:70)nfact70 =
1.1979e+100
( ) ( ) 1221! = Lnnnn Fatorial de n
-
9Anlise de Dados
Variveis Aleatrias Gerao de Nmeros Aleatrios Mximos e mnimos Somas e Produtos Anlise Estatstica
Anlise Estatstica
Distribuio de Freqncia: Indica as freqncias relativas com que os
possveis valores da varivel aleatriaocorrem na populao
Caso discreto: Aproximao da PDF x pode assumir os valores {X1, X2, ..., Xm} N observaes de x
Freqncia Relativa de Xk:
( ) ( ) ( )mXNXNXNN +++= L21
( ) ( )NXN
XFDP kk =~
Anlise Estatstica
Distribuio de Freqncia: Caso contnuo: Aproximao da pdf x pode assumir qualquer valor no intervalo [X1,X2] N observaes de x, m bins Largura de cada bin:
N(k) = nmero de amostras tais que
Freqncia Relativa do bin k: ( ) ( )N
kNkfdp =~
( ) XkXXXkX ++ 11 1
mXXX 12 =
Anlise Estatstica
Matlab: funes hist() e bar() hist(x): calcula e exibe automaticamente o
histograma com 10 bins dos dados contidosno vetor x
N = hist(x): calcula automaticamente eretorna no vetor N o histograma com 10 binsdos dados contidos no vetor x
N = hist(x,m): calcula e retorna no vetor N ohistograma dos dados contidos no vetor x,usando m bins
Anlise Estatstica
Matlab: funes hist() e bar() N = hist(x,xc): calcula automaticamente e
retorna no vetor N o histograma dos dadoscontidos no vetor x, com o vetor xc definindoos centros das bins
[N,xc] = hist(...): calcula automaticamente eretorna no vetor N o histograma dos dadoscontidos no vetor x, e no vetor xc o centrosdas bins
Anlise Estatstica
Matlab: exemplosubplot(2,1,1)hist(data1)title('Histograma de data1 U(2,4)')xlabel('x'), ylabel('N')subplot(2,1,2)hist(data3)title('Histograma de data3 N(3,1)')xlabel('x'), ylabel('N')
-
10
Anlise Estatstica Anlise Estatstica
Matlab: exemplosubplot(2,1,1)hist(data1,25)title('Histograma de data1 U(2,4)')xlabel('x'), ylabel('N')subplot(2,1,2)hist(data3,25)title('Histograma de data3 N(3,1)')xlabel('x'), ylabel('N')
Anlise Estatstica Anlise Estatstica
Matlab: funes hist() e bar() hist(): s calcula as freqncias absolutas! Caso se deseje trabalhar com as freqncias
relativas, deve-se utilizar a funo bar() emcombinao com a funo hist() hist(): usada para calcular o histograma de
freqncias absolutas bar(): usada para exibir o histograma de
freqncias relativas
Anlise Estatstica
Matlab: freqncia relativa
n1 = length(data1);[freq1,x1] = hist(data1,25);rfreq1 = freq1/n1;n3 = length(data3);[freq3,x3] = hist(data3,25);rfreq3 = freq3/n3;
Anlise Estatstica
Matlab: freqncia relativasubplot(2,1,1), bar(x1,rfreq1)title('Histograma relativo de data1')xlabel('x'), ylabel('freq. relativa')
subplot(2,1,2), bar(x3,rfreq3)title('Histograma Relativo de data3')xlabel('x'), ylabel('freq. relativa')
-
11
Anlise Estatstica Anlise Estatstica
Medidas de Tendncia Central mean(): mdia amostral
median(): mediana valor central de umconjunto ordenado de amostras sort(x): ordena o vetor x de forma crescente
( )=
=N
nnx
Nx
1
1
Anlise Estatstica
Medidas de Tendncia Central>> mean(data3)ans =
3.0264>> mean(data4)ans =
0.9303>> median(data3)ans =
3.0190>> median(data4)ans =
1.1722
Anlise Estatstica
Anlise Estatstica
Medidas de Variao std(): desvio padro amostral
var(): varincia quadrado do desvio padro
( )( )=
=N
nxnx
N 12
11
Anlise Estatstica
Medidas de Variao>> std(data3)ans =
1.0475
>> std(data4)ans =
2.8223
-
12
Anlise Estatstica Processamento de Sinais
Anlise de Dados Interpolao Regresso e Ajuste de Curvas Integrao e Diferenciao Minimizao de Funes Processamento Simblico
Interpolao
Definio: Estimao de um valor yicorrespondente a um determinado xi,a partir de um conjunto disponvel depares (x,y) x: vetor de N elementos, crescentes y: vetor de N elementos, correspondentes
aos elementos do vetor x x(1) = xi = x(N) Interpolao Linear Interpolao por Spline
Interpolao
Interpolao Linear:1) Encontra o intervalo [x(k) x(k+1)] quecontm o valor xi
Interpolao
Interpolao Linear:2) Aplica a equao de interpolao
( ) ( )( )kxxmkyy ii +=( ) ( )( ) ( )kxkx
kykym ++=
11
Interpolao Linear
Matlab: funo interp1() yi = interp1(x,y,xi) x: vetor de N elementos, crescentes y: vetor de N elementos, correspondentes aos
elementos do vetor x xi: vetor de M elementos, contendo os pontos
para os quais deseja-se fazer a interpolaolinear
yi: vetor de M elementos, contendo os pontosinterpolados
-
13
Interpolao Linear
Matlab: funo interp1() Exemplo:>> x = 0:5;>> y = [0 20 60 68 77 110];
>> plot(x,y, '.', 'markersize', 20)>> xlim([-1 6]), ylim([-20 120])>> xlabel('x'), ylabel('y')>> xi = [2.6 3.2 4.9];>> hold on, plot([xi;xi], ylim, 'r:')
Interpolao Linear
Interpolao Linear
Matlab: funo interp1() Exemplo:>> yi = interp1(x,y,xi);>> plot(xi,yi, 'r.', 'markersize', 20)
>> plot(x,y)
Interpolao Linear
Interpolao Linear Interpolao Linear
Matlab: funo interp2() Similar, para interpolao bidimensional Z = interp2(X,Y,Z,Xi,Yi) X: matriz MxN elementos, crescentes Y: matriz de MxN elementos, correspondentes aos
elementos da matriz X Z: matriz de MxN elementos, correspondentes aos
elementos da matrizes X e Y
Xi e Yi: matrizes de PxQ elementos, contendo ospontos para os quais deseja-se fazer a interpolaolinear
Zi: matriz de PxQ elementos, contendo os pontosinterpolados
-
14
Interpolao Cbica (Spline)
Mesmas premissas da interpolaolinear
Encontra o intervalo [x(k) x(k+1)] quecontm o valor xi
Ajusta um polinmio de grau 3 entre osdois pontos
Oferece uma transio mais suave O polinmio passa pelos dois pontos As curvaturas e derivadas de polinmios
adjacentes so iguais
Interpolao Cbica (Spline)
Equao de Interpolao:
( )( ) ( )( ) ( )( ) 432231 akxxakxxakxxay iiii +++=
Interpolao Cbica (Spline)
Matlab: funo spline() yi = spline(x,y,xi) x: vetor de N elementos, crescentes y: vetor de N elementos, correspondentes aos
elementos do vetor x xi: vetor de M elementos, contendo os pontos
para os quais deseja-se fazer a interpolaopor spline cbica
yi: vetor de M elementos, contendo os pontosinterpolados
Interpolao Cbica (Spline)
Matlab: funo spline() Mesmo exemplo:>> x = 0:5;>> y = [0 20 60 68 77 110];>> plot(x,y, 'b.-' )>> xlim([-1 6]), ylim([-20 120])>> xlabel('x'), ylabel('y')>> xi = [2.6 3.2 4.9];>> hold on, plot([xi;xi], ylim, 'r:')>> yi = spline(x,y,xi);>> plot(xi,yi, 'r.', 'markersize', 20)
Interpolao Cbica (Spline)
Matlab: funo spline() Mesmo exemplo:>> x = 0:5;>> y = [0 20 60 68 77 110];>> plot(x,y, 'b.-' )>> xlim([-1 6]), ylim([-20 120])>> xlabel('x'), ylabel('y')>> xi = [2.6 3.2 4.9];>> hold on, plot([xi;xi], ylim, 'r:')>> yi = spline(x,y,xi);>> plot(xi,yi, 'r.', 'markersize', 20)
Interpolao Linear
-
15
Interpolao Cbica (Spline)
Matlab: funo spline() Mesmo exemplo:>> xi = 0:0.01:5;>> yi = spline(x,y,xi);>> plot(xi,yi, 'r')
Interpolao Cbica (Spline)
Interpolao Experimental
Medies experimentais bidimensionais: muito comum fazer medies em posies
espaciais (ou temporais) no igualmenteespaadas
Normalmente armazenadas em uma matrizde 3 colunas (X,Y e Z) e N linhas(correspondentes aos valores medidos)
Para visualizao no Matlab, necessrioque os dados estejam em formato de matriz
Interpolao Experimental
Medies experimentais bidimensionais: Tem-se 3 vetores, x, y e z, de tamanho N Deseja-se 3 matrizes [PxQ], X, Y e Z Essas matrizes podem ento ser usadas
pelas funes pcolor(), surf(), mesh(), etc
Matlab: funo griddata()
Interpolao Experimental
Matlab: funo griddata() Zi = griddata(xe,ye,ze,Xi,Yi) xe: vetor de N elementos ye: vetor de N elementos, correspondentes aos
elementos do vetor x ze: vetor de N elementos, contendo as medidas
experimentais Xi, Yi: matrizes PxQ, contendo os pontos para
os quais deseja-se fazer a interpolao Zi: matriz PxQ, contendo os pontos
interpolados
Interpolao Experimental
Exemplo: Campo Magntico Bz
-
16
Interpolao Experimental
Exemplo: Campo Magntico Bz
157 pontos
Interpolao Experimental
Exemplo: Campo Magntico Bz -1.7419 1.3860 -0.0604
-1.5346 1.4035 -0.0704 -1.3410 1.4035 -0.0810 -1.2028 1.4386 -0.0832 -0.9539 1.4912 -0.0824 -0.6636 1.4737 -0.0803 -0.3456 1.4912 -0.0507 -0.1382 1.4912 -0.0219 0.1106 1.4386 0.0199 0.4009 1.4561 0.0617 0.6083 1.4561 0.0802 0.8295 1.4386 0.0909
xe ye be
..
.
Interpolao Experimental
Interpolao de Pontos Experimentais noMatlab:load medida.txtxmin = min(xe); xmax = max(xe);ymin = min(ye); ymax = max(ye);N = 50;
xi = xmin:(xmax-xmin)/(N-1):xmax;yi = ymin:(ymax-ymin)/(N-1):ymax;
Interpolao Experimental
Interpolao de Pontos Experimentais noMatlab:
[Xi Yi] = meshgrid(xi,yi);Bi = griddata(xe, ye, be, Xi, Yi);pcolor(Xi,Yi,Bi)shading interpxlabel('x'), ylabel('y')axis([-3 3 -3 3])
Interpolao Experimental Processamento de Sinais
Anlise de Dados Interpolao Regresso e Ajuste de Curvas Integrao e Diferenciao Minimizao de Funes Processamento Simblico
-
1MQI 2104 - Processamento eAnlise de Sinais Digitais
Carlos Hall Sala 06 Ramal [email protected]
Processamento de Sinais
Anlise de Dados Interpolao Regresso e Ajuste de Curvas Integrao e Diferenciao Minimizao de Funes Processamento Simblico
Regresso e Ajuste de Curvas
A interpolao um mtodo local, queconsidera os pontos mais prximos dodesejado
A regresso, ou ajuste de curvas, ummtodo global, que determina a melhorfuno para o conjunto completo dosdados disponveia
Ou seja, deseja-se encontrar a funoy = f(x) que melhor se ajusta aos dados
Regresso e Ajuste de Curvas
Quantificao da qualidade do ajuste: MSE: Mean Squared Error RMSE: Root Mean Squared Error
( )=
=N
kkk yyN
MSE1
21
MSERMSE =yk: valores reais da funo
yk: valores estimados pelo ajuste^
Regresso e Ajuste de Curvas
Exemplo: Medidas de Temperatura aolongo do tempo
Tempo (s) Temp (C)0 01 202 603 684 775 110
Regresso e Ajuste de Curvas
Exemplo: Medidas de Temperatura aolongo do tempo>> t = 0:5;>> T = [0 20 60 68 77 110];>> plot(t, T, '.', 'markersize',20 )>> xlabel('t(s)')>> ylabel('T(C)')
-
2Regresso e Ajuste de Curvas Regresso e Ajuste de Curvas
Exemplo: Medidas de Temperatura aolongo do tempo Deseja-se fazer uma regresso linear Ou seja, deseja-se ajustar aos dados uma
funo do tipo
Observando o grfico, nota-se que uma boaaproximao poderia ser:
batT +=
tT 20 =
Regresso e Ajuste de Curvas Regresso e Ajuste de Curvas
Exemplo: Medidas de Temperatura aolongo do tempo O quo bom o ajuste? Clculo do MSE:
>> T_ = 20*t;>> e = T_ - T;>> MSE = mean(e.^2) 95.5>> RMSE = sqrt(MSE) 9.772
Regresso e Ajuste de Curvas
Exemplo: Medidas de Temperatura aolongo do tempo RMSE de 9.772 parece razovel Mas como achar a melhor reta possvel? Ajuste por MMSE - Minimum Mean Squared
Error Tambm chamado de Least-Square Busca os parmetros (no caso, a e b) que
minimizam o MSE (e o RMSE)
Regresso e Ajuste de Curvas
Ajuste por Mnimos Quadrados: Clculo do MSE:
batT += ( )= =N
kkk TTN
MSE1
21
( )=
+= Nk
kk TbatNMSE
1
21
-
3Regresso e Ajuste de Curvas
Ajuste por Mnimos Quadrados: MSE mnimo quando as derivadas parciais
em relao aos parmetros a e b so nulas:
0=
aMSE 0=
b
MSE
Regresso e Ajuste de Curvas
Ajuste por Mnimos Quadrados: MSE mnimo quando as derivadas parciais
em relao aos parmetros a e b so nulas:
( )=
+= N
kkkk tTbatNa
MSE1
2
( )02
2
111
2
1
2
=
+
=
+=
===
=N
kkk
N
kk
N
kk
N
kkkkk
tTbtatN
tTbtatNa
MSE
Regresso e Ajuste de Curvas
Ajuste por Mnimos Quadrados: MSE mnimo quando as derivadas parciais
em relao aos parmetros a e b so nulas:
( )=
+= N
kkk TbatNb
MSE1
2
0211
=
+
=
==
N
kk
N
kk TNbatNb
MSE
Regresso e Ajuste de Curvas
Ajuste por Mnimos Quadrados: MSE mnimo quando as derivadas parciais
em relao aos parmetros a e b so nulas:
011
=
+
==
N
kk
N
kk TNbat
0111
2 =
+
===
N
kkk
N
kk
N
kk tTbtat
Regresso e Ajuste de Curvas
Ajuste por Mnimos Quadrados: Em forma matricial:
=
=
=
=
==N
kk
N
kkk
N
kk
N
kk
N
kk
T
Tt
ba
Nt
tt
1
1
1
11
2
Regresso e Ajuste de Curvas
Matlab: funo polyfit() c = polyfit(x,y,M) x: vetor de N elementos, crescentes y: vetor de N elementos, correspondentes aos
elementos do vetor x M: ordem do polinmio interpolador M = 1: interpolao linear
c: vetor de M+1 elementos, contendo oscoeficientes do polinmio interpolador
-
4Regresso e Ajuste de Curvas
Exemplo: Medidas de Temperatura aolongo do tempo>> t = 0:5;>> T = [0 20 60 68 77 110];>> c = polyfit(t, T, 1) [20.83 3.76]>> T_ = polyval(c, t);>> e = T_ - T;>> MSE = mean(e.^2) 95.5 59.47>> RMSE = sqrt(MSE) 9.772 7.71
Regresso e Ajuste de Curvas
Regresso e Ajuste de Curvas
Exemplo: Outros graus de interpolao c1 = polyfit(t, T, 1); c3 = polyfit(t, T, 3); c5 = polyfit(t, T, 5); t2 = 0:0.01:5; T_1 = polyval(c1, t2); T_3 = polyval(c3, t2); T_5 = polyval(c5, t2);
Regresso e Ajuste de Curvas
Exemplo: Outros graus de interpolao xlabel('t(s)'), xlim([-1 6]) ylabel('T(C)'), ylim([-1 120]) plot(t, T, '.', 'markersize',20 ) hold plot(t2, T_1, 'r', 'linewidth', 2) plot(t2, T_3, 'b', 'linewidth', 2) plot(t2, T_5, 'm', 'linewidth', 2) legend('Ordem 1', 'Ordem 3', 'Ordem 5')
Regresso e Ajuste de Curvas Processamento de Sinais
Anlise de Dados Interpolao Regresso e Ajuste de Curvas Minimizao de Funes Integrao e Diferenciao Processamento Simblico
-
5Minimizao de Funes Considere uma funo real de n variveis:
Mtodos de Minimizao de Funo: Encontrar o vetor x que corresponde ao
menor valor possvel de y, global ou local Sujeito ou no a restries e limites
H dois tipos bsicos de minimizao: Minimizao de funes lineares Minimizao de funes no-lineares
( ) nxyxfy = ,,
Sistemas Lineares
Considere um sistema de M equaeslineares de N variveis:
Ax = b
A: matriz M x N b: vetor M x 1 x: vetor N x 1
Sistemas Lineares
Considere um sistema de M equaeslineares de N variveis:
A: matriz M x N b: vetor M x 1 x: vetor N x 1
=
MNMNMM
N
N
b
bb
x
xx
aaa
aaaaaa
MML
MOMMLL
2
1
2
1
21
22221
11211
Sistemas Lineares
Soluo do sistema de M equaeslineares de N variveis: M = N: x = A-1b A-1 = matriz MxM, inversa de A (A-1A = I ) Ax = b A-1Ax = A-1b x = A-1b
M ? N: x = A*b A* = matriz NxM, pseudo-inversa de A (A*A = I ) Ax = b A*Ax = A*b x = A*b
Sistemas Lineares
Soluo do sistema de M equaeslineares de N variveis: Matlab Funo inv: inversa de matriz quadrada x = inv(A) * b
Funo pinv: pseudo-inversa de matrizretangular ou singular x = pinv(A) * b
operador \ - backslash x = A \ b
Sistemas Lineares
Exemplo:
15231023
321
321
321
==++=+
xxxxxxxxx
-
6Sistemas Lineares
Exemplo:
=
15
10
111231123
3
2
1
xxx
A x b
Sistemas Lineares
Exemplo: Matlab
>> A = [3 2 -1; -1 3 2; 1 -1 -1]>> b = [10 5 -1];
>> x = inv(A)*bx = 26.0000 -18.0000 41.0000
Sistemas Lineares
Exemplo: Matlab
>> A = [3 2 -1; -1 3 2; 1 -1 -1]>> b = [10 5 -1];
>> x = A\bx = 26.0000 -18.0000 41.0000
Minimizao de Funes Lineares Considere um sistema de M equaes
lineares de N variveis:
Ax = b
A: matriz M x N b: vetor M x 1 x: vetor N x 1
E um sistema de M restries lineares de Nvariveis (inequaes):
Cx = d
Minimizao de Funes Lineares Considere um sistema de M equaes
lineares de N variveis:
Ax = b
A: matriz M x N b: vetor M x 1 x: vetor N x 1
E um sistema de M restries lineares de Nvariveis (inequaes):
Cx = d
dCxbAx
x
,2
min2
Funes de minimizao linear do Matlab: lsqlin: resoluo de problemas de mnimos
quadrados lineares com restries Sintaxe: x = lsqlin(A, b, C, d);
lsqnonneg: resoluo de problemas demnimos quadrados lineares com restries denegatividade Sintaxe: x = lsqnonneg(A, b);
Minimizao de Funes Lineares
-
7Minimizao de Funes No-Lineares
Considere uma funo real no-linearde n variveis:
onde f(.) uma funo no-linear
( ) nxyxfy = ,, Exemplo para funo unidimensional: Campo de um dipolo magntico para
y = 0, z = 1
>> x = -10:0.1:10;>> [Bx,By,Bz] = campodip(x,0,1);>> plot(x,Bx, 'linewidth', 2)>> xlabel('x'), ylabel('Bx')
( ) 5223
rrxxBx
= 22 zxr +=
Minimizao de Funes No-Lineares
Exemplo para funo unidimensional:
xmin
Minimizao de Funes No-Lineares
Algumas funes de minimizao no-linear do Matlab: fminbnd fzero fsolve lsqnonlin lsqcurvefit
Diferem quanto ao tipo de minimizaoe o mtodo empregado
Minimizao de Funes No-Lineares
Algumas funes de minimizao doMatlab: fminbnd: minimizao de funo escalar no-
linear limitada fzero: busca de raiz de funo escalar no-
linear fsolve: resoluo de sistema de equaes no-
lineares por mnimos quadrados lsqnonlin: resoluo de problemas de mnimos
quadrados no-lineares lsqcurvefit: resoluo de problemas de
mnimos quadrados no-lineares
Minimizao de Funes No-Lineares
Funo fminbnd: minimizao defuno escalar no-linear limitada Sintaxe: x = fminbnd(FUN, x1, x2); FUN: ponteiro para a funo desejada x1, x2: limites inferior e superior de busca x: mnimo local encontrado em [x1,x2]
FUN(x): valor do mnimo local em x Exemplo: x = fminbnd(@cos, 3, 4) ou
x = fminbnd('cos', 3, 4)
Minimizao de Funes No-Lineares
-
8 Funo fminbnd: minimizao defuno escalar no-linear limitada Exemplo: Clculo de
>> x = fminbnd(@cos, 3, 4)ans = 3.14159480185141
Minimizao de Funes No-Lineares
Funo optimset: parmetros deotimizao options = optimset(@fminbnd)ActiveConstrTol: []DerivativeCheck: []Diagnostics: []DiffMaxChange: []DiffMinChange: []Display: 'notify'GoalsExactAchieve: []GradConstr: []GradObj: []Hessian: []HessMult: []HessPattern: []HessUpdate: []Jacobian: []JacobMult: []JacobPattern: []LargeScale: []
LevenbergMarquardt: []LineSearchType: []MaxFunEvals: 500MaxIter: 500MaxPCGIter: []MaxSQPIter: []MeritFunction: []MinAbsMax: []NonlEqnAlgorithm: []Preconditioner: []PrecondBandWidth: []ShowStatusWindow: []TolCon: []TolFun: []TolPCG: []TolX: 1.0000e-004TypicalX: []
Minimizao de Funes No-Lineares
Funo optimset: parmetros deotimizao options = optimset(@fminbnd)
>> options.MaxFunEvals 500>> options.MaxIter 500>> options.TolX 1e-4
Minimizao de Funes No-Lineares
Funo fminbnd: minimizao defuno escalar no-linear limitada Exemplo: Clculo de
>> options.TolX = 1e-12;>> x = fminbnd(@cos, 3, 4, options)ans = 3.14159265402771 (3.14159480185141)
Minimizao de Funes No-Lineares
Exemplo para campo magntico: Definio da Funo a ser minimizada:function y = fun(x) y = campodip(x, 0, 1);
Minimizao de Funes No-Lineares
Funo fminbnd:>> options.TolX = 1e-12;>> x = fminbnd(@fun, -1, 1, options)x = -1.089617451163368e-012 (xmin = 0)
>> x = fminbnd(@fun, -2, 2, options)x = 5.551115123125783e-016 (xmin = 0)
Minimizao de Funes No-Lineares
-
9 Funo fminbnd:>> x = fminbnd(@fun, -3, 3, options)x = -1.998401444325282e-015 (xmin = 0)
>> x = fminbnd(@fun, -4, 4, options)x = -4 (mnimo local!)
Minimizao de Funes No-Lineares
Funo fminbnd:>> x = fminbnd(@fun, -3, 3, options)x = -1.998401444325282e-015 (xmin = 0)
>> x = fminbnd(@fun, -4, 4, options)x = -4 (mnimo local!)
Minimizao de Funes No-Lineares
Funo fzero: busca de raiz de funoescalar no-linear Sintaxe: x = fzero(FUN, x0); FUN: ponteiro para a funo desejada x0: ponto inicial de busca x: zero encontrado prximo a x0, ou NaN
se no encontrar soluo FUN(x) = 0!
Exemplo: x = fzero(@sin, 3) ou x = fzero('sin', 3)
Minimizao de Funes No-Lineares
Funo optimset: options = optimset(@fzero)
>> options.TolX 2.22e-16
Minimizao de Funes No-Lineares
Funo fzero: busca de raiz de funoescalar no-linear Exemplo: Clculo de
>> x = fzero(@sin, 3)ans =
3.14159265358979
Minimizao de Funes No-Lineares
Funo fzero: busca de raiz de funoescalar no-linear Exemplo: Campo magntico
>> x = fzero(@fun, 1)ans =
0.70710678118655
Minimizao de Funes No-Lineares
-
10
Funo fzero: busca de raiz de funoescalar no-linear Exemplo: Clculo de
>> x = fzero(@sin, 3)ans =
3.14159265358979
Minimizao de Funes No-Lineares
Funo fzero: busca de raiz de funoescalar no-linear Exemplo: Campo magntico
>> x = fzero(@fun, -1)ans =
-0.70710678118655
Minimizao de Funes No-Lineares
Funo fzero: busca de raiz de funoescalar no-linear Exemplo: Campo magntico
>> x = fzero(@fun, -1)ans =
-0.70710678118655
Minimizao de Funes No-Lineares
Funo fsolve: resoluo de sistema deequaes no-lineares por mnimosquadrados Sintaxe: X = fsolve(FUN, X0); FUN: ponteiro para a funo desejada X0: vetor com o ponto inicial de busca X: vetor de zero encontrado prximo a X0 FUN(X) = 0
options = optimset(@fsolve)
Minimizao de Funes No-Lineares
options = optimset(@fsolve) DerivativeCheck: 'off' Diagnostics: 'off' DiffMaxChange: 0.10000000000000 DiffMinChange: 1.000000000000000e-008 Display: 'final' Jacobian: 'off' JacobPattern: 'sparse(ones(jrows,jcols))' LargeScale: 'off' LevenbergMarquardt: 'off' LineSearchType: 'quadcubic' MaxFunEvals: '100*numberofvariables' MaxIter: 400 MaxPCGIter: 'max(1,floor(numberofvariables/2))' NonlEqnAlgorithm: 'dogleg' PrecondBandWidth: 0 TolFun: 1.000000000000000e-006 TolPCG: 0.10000000000000 TolX: 1.000000000000000e-006 TypicalX: 'ones(numberofvariables,1)'
Minimizao de Funes No-Lineares
Funo fsolve: resoluo de sistema deequaes no-lineares por mnimosquadrados Exemplo: Clculo de >> x = fsolve(@sin, 3)Optimization terminated successfully: First-order optimality is less than
options.TolFun.x = 3.14159265329799
Minimizao de Funes No-Lineares
-
11
Funo fsolve: resoluo de sistema deequaes no-lineares por mnimosquadrados Exemplo: Campo magntico
>> x = fsolve(@fun, 1, optimset('fsolve'))Optimization terminated successfully: First-order optimality is less than
options.TolFun.x = 0.70710678110186
Minimizao de Funes No-Lineares
Funo fsolve: resoluo de sistema deequaes no-lineares por mnimosquadrados Exemplo: Campo magntico>> x = fsolve(@fun, 2, optimset('fsolve'))Optimization terminated successfully: First-order optimality is less than
options.TolFun.x = 11 fun(11) = 0.0015
Minimizao de Funes No-Lineares
Funo fsolve: resoluo de sistema deequaes no-lineares por mnimosquadrados Exemplo: Campo magntico>> x = fsolve(@fun, 2, optimset('fsolve'))Optimizer appears to be converging to a
minimum that is not a root:Sum of squares of the function values is >
sqrt(options.TolFun).Try again with a new starting point.x = 0
Minimizao de Funes No-Lineares
Exemplo para funo bidimensional: Campo de um dipolo magntico para z = 1
( ) 5223
rrxxBx
=
222 zyxr ++=
Minimizao de Funes No-Lineares
Exemplo para funo bidimensional: Campo de um dipolo magntico para z = 1
( ) 5223
rrxxBx
=
222 zyxr ++=
Minimizao de Funes No-Lineares
Exemplo para campo magntico: Definio da Funo a ser minimizada:function y = fun2(x) y = campodip(x(1), x(2), 1);
Minimizao de Funes No-Lineares
-
12
Funo fsolve: resoluo de sistema deequaes no-lineares por mnimos quadrados Exemplo: Campo magntico
>> x = fsolve(@fun, [0.5 0.5], optimset('fsolve'))Optimization terminated successfully:Gradient in the search direction less than
tolFunGradient less than 10*(tolFun+tolX)x = 0.70710531298487 0.00194507200989
Minimizao de Funes No-Lineares
Funo fsolve: resoluo de sistema deequaes no-lineares por mnimos quadrados Exemplo: Campo magntico
>> x = fsolve(@fun, [1 1], optimset('fsolve'))Optimization terminated successfully:Search direction less than tolXx = 1 1
Minimizao de Funes No-Lineares
Campo magntico 2D: infinitos zeros!
>> contour(X,Y,Bx, [0 0], 'r')>> grid>> xlabel('x')>> ylabel('y')
Minimizao de Funes No-Lineares
Campo magntico 2D: infinitos zeros!
Minimizao de Funes No-Lineares
Funo lsqnonlin: resoluo de problemas demnimos quadrados no-lineares Sintaxe: x = lsqnonlin(FUN, x0, lb, ub, options, p1,
p2, ...); FUN: ponteiro para a funo desejada x0: escalar ou vetor com o ponto inicial de busca x: escalar ou vetor com o mnimo encontrado
prximo a x0 lb, ub: vetores com limites inferiores e superiores
para x options: opes de otimizao p1, p2, ... : parmetros para a funo
Minimizao de Funes No-Lineares
( )[ ] xFUNx 2min
options = optimset(@lsqnonlin)Minimizao de Funes No-Lineares
DerivativeCheck: 'off'Diagnostics: 'off'DiffMaxChange: 0.10000000000000DiffMinChange: 1.000000000000000e-008Display: 'final'Jacobian: 'off'JacobPattern: 'sparse(ones(jrows,jcols))'LargeScale: 'on'LevenbergMarquardt: 'on'LineSearchType: 'quadcubic'MaxFunEvals: '100*numberofvariables'MaxIter: 400MaxPCGIter: 'max(1,floor(numberofvariables/2))'PrecondBandWidth: 0TolFun: 1.000000000000000e-006TolPCG: 0.10000000000000TolX: 1.000000000000000e-006TypicalX: 'ones(numberofvariables,1)'
-
13
Funo lsqnonlin: resoluo de problemas demnimos quadrados no-lineares Exemplo: Caixa Preta
Minimizao de Funes No-Lineares
CIRCUITOELETRNICO
Vin Vout
Funo lsqnonlin: resoluo de problemas demnimos quadrados no-lineares Exemplo: Caixa Preta
Minimizao de Funes No-Lineares
Vin Vout
R
C
= CRtVV inout exp1
Funo lsqnonlin: resoluo de problemas demnimos quadrados no-lineares Exemplo: Caixa Preta Vin = 5V 11 medidas de Vout, uma a cada segundo
t Vout0 0.0141 3.186
2 4.337 3 4.775 4 4.884 5 4.966 6 4.985 7 4.963 8 5.004 9 4.978 10 5.028
Minimizao de Funes No-Lineares
Funo lsqnonlin: resoluo de problemas demnimos quadrados no-lineares Exemplo: Caixa Preta
>> Vin = 5;>> t = 0:10;>> Vout_e = [0.014 3.186 4.337 4.775 4.884 4.966 4.985
4.963 5.004 4.978 5.028];>> plot(t, Vout_e, '.-', 'markersize', 20)>> xlabel('t(s)')>> ylabel('Vout(V)')>> xlim([0 11])>> ylim([0 5.5])
Minimizao de Funes No-Lineares
Funo lsqnonlin: resoluo de problemas demnimos quadrados no-lineares
Minimizao de Funes No-Lineares
Como descobrir R e Ca partir destas medidasexperimentais?
Funo lsqnonlin: resoluo de problemas demnimos quadrados no-lineares Exemplo: Caixa Preta
function erro = filtroRC(X, Vin, t, Vout_e) R = X(1); C = X(2); Vout = Vin * (1 exp(-t/(R*C)));
erro = Vout - Vout_e;
Minimizao de Funes No-Lineares
-
14
Funo lsqnonlin: resoluo de problemas demnimos quadrados no-lineares Exemplo: Caixa Preta
>> Vin = 5;>> t = 0:10;>> Vout_e = [0.014 3.186 4.337 4.775 4.884 4.966
4.985 4.963 5.004 4.978 5.028];>> X0 = [1 1];>> options = optimset(@lsqnonlin)>> X = lsqnonlin('filtroRC', X0, [], [], options, Vin, t, Vout_e)
Minimizao de Funes No-Lineares
Funo lsqnonlin: resoluo de problemas demnimos quadrados no-lineares Exemplo: Caixa Preta
>> Vin = 5;>> t = 0:10;>> Vout_e = [0.014 3.186 4.337 4.775 4.884 4.966
4.985 4.963 5.004 4.978 5.028];>> X0 = [1 1];>> options = optimset(@lsqnonlin)>> X = lsqnonlin('filtroRC', X0, [], [], options, Vin, t, Vout_e)
Minimizao de Funes No-Lineares
Optimization terminated successfully: Relative function value changing by less than OPTIONS.TolFun
X =
0.9938 0.9938
Funo lsqnonlin: resoluo de problemas demnimos quadrados no-lineares Exemplo: Caixa Preta
>> R = X(1);>> C = X(2);>> Vout = Vin * (1 - exp(-t/(R*C)));
>> figure>> plot(t, Vout_e, 'b.', 'markersize', 20)>> hold on, plot(t, Vout, 'r')>> xlabel('t (s)'), ylabel('Vout (V)')>> legend('Experimental', 'Ajustado')
Minimizao de Funes No-Lineares
Funo lsqnonlin: resoluo de problemas demnimos quadrados no-lineares
Minimizao de Funes No-Lineares
Funo lsqcurvefit: resoluo de problemasde mnimos quadrados no-lineares (ajustede curva) Sintaxe: X = lsqcurvefit(FUN, X0, Xd, Yd); FUN: ponteiro para a funo desejada X0: ponto inicial de busca X: mnimo encontrado prximo a X0 Xd, Yd: dados para o ajuste
Minimizao de Funes No-Lineares
( )( )[ ] 2,min ydxdxFUNx
Funo lsqcurvefit: resoluo de problemasde mnimos quadrados no-lineares Exemplo: Caixa Preta
function Vout = filtroRC2(X, t, Vin) R = X(1); C = X(2); Vout = Vin * (1 exp(-t/(R*C)));
Minimizao de Funes No-Lineares
-
15
Funo lsqcurvefit: resoluo de problemas demnimos quadrados no-lineares Exemplo: Caixa Preta>> Vin = 5;>> t = 0:10;>> Vout_e = [0.014 3.186 4.337 4.775 4.884 4.966 4.985
4.963 5.004 4.978 5.028];>> X0 = [1 1];>> options = optimset(@lsqcurvefit)>> X = lsqcurvefit('filtroRC2', X0, t, Vout_e, ...
[], [], options, Vin)
Minimizao de Funes No-Lineares
Funo lsqcurvefit: resoluo de problemas demnimos quadrados no-lineares Exemplo: Caixa Preta>> Vin = 5;>> t = 0:10;>> Vout_e = [0.014 3.186 4.337 4.775 4.884 4.966 4.985
4.963 5.004 4.978 5.028];>> X0 = [1 1];>> options = optimset(@lsqcurvefit)>> X = lsqcurvefit('filtroRC2', X0, t, Vout_e, ...
[], [], options, Vin)
Minimizao de Funes No-Lineares
Optimization terminated successfully: Relative function value changing by less than OPTIONS.TolFun
X =
0.9938 0.9938
Processamento de Sinais
Anlise de Dados Interpolao Regresso e Ajuste de Curvas Minimizao de Funes Integrao e Diferenciao Processamento Simblico
-
1MQI 2104 - Processamento eAnlise de Sinais Digitais
Carlos Hall Sala 06 Ramal [email protected]
Processamento de Sinais
Anlise de Dados Interpolao Regresso e Ajuste de Curvas Minimizao de Funes Integrao e Diferenciao Processamento Simblico
Integrao e Diferenciao
Conceitos chave da rea de clculo Fundamentais para resoluo de
muitos problemas de engenharia ecincia
Em alguns casos h soluo analtica Em outros casos, necessria a
soluo numrica Integrao numrica Diferenciao numrica
Integrao
Integral de uma funo f(x), para xvariando entre a e b: rea sob a curva, entre x=a e x=b
Integrao
Integral de uma funo f(x), para xvariando entre a e b: rea A sob a curva, entre x=a e x=b
f(x): integrando a: limite inferior de integrao b: limite superior de integrao x: varivel de integrao
( )= ba
dxxfA
Integrao
Integral de uma funo f(x), para xvariando entre a e b: soluo analtica: encontrar a primitiva p(x) da funo f(x)
calcular a funo p(x) em x = a e x = b a integral ser dada por:
( ) ( ) ( ) ( )xfdx
xdpxpxf =
( ) ( )apbpA =
-
2Integrao Numrica
Integral de uma funo f(x), para xvariando entre a e b: soluo numrica: quadratura aproximar a funo f(x) por outra funo, que
seja fcil de calcular a rea ou seja, cuja primitiva seja simples
calcular a integral da funo de aproximao Quanto melhor a aproximao da funo f(x),
mais exato ser o valor da integral numrica
Integrao Numrica
Integral de uma funo f(x), para xvariando entre a e b: soluo numrica: quadratura Tcnicas mais comuns: Regra Trapezoidal: Aproximao por
segmentos de reta Regra de Simpson: Aproximao por
segmentos de parbola Regra de Newton-Cotes: Aproximao por
segmentos de funes de ordens superiores
Integrao Numrica
Regra Trapezoidal: Aproximao porsegmentos de reta Divide-se o intervalo [a,b] em n sub-intervalos
de igual largura x
Cada subintervalo definido por [xi,xi+x]
Define-se a funo de aproximao por retasque conectam os valores da funo f(x) nosextremos de cada intervalo
nabx =
xiaxi +=
Integrao Numrica
Regra Trapezoidal: Aproximao porsegmentos de reta
( ) ( ) xxfxfA iii += +2 1
Ai
Integrao Numrica
Regra Trapezoidal: Aproximao porsegmentos de reta
( ) ( )( )= +=
+== ni
ii
n
ii xfxf
xAA0
10 2
( ) ( ) ( ) ( ) ( )( )nno xfxfxfxfxfxA +++++= 121 2222 L
Integrao Numrica
Matlab: funo trapz() z = trapz(x,y) x: vetor de N elementos, crescentes y: vetor de N elementos, correspondentes aos
elementos do vetor x, definindo a funoy=f(x)
z: integral numrica de y=f(x), correspondente rea A da funo no intervalo definido pelomnimo e pelo mximo do vetor x
-
3Integrao Numrica
Exemplo: funo y=humps(x)
>> x = -1:0.01:2;>> y = humps(x);>> plot(x,y,'linewidth', 2)>> xlabel('x')>> ylabel('humps(x)')>> grid
Integrao Numrica
Exemplo: funo y=humps(x)
Integrao Numrica
Exemplo: funo y=humps(x) Integrao usando 20 pontos:
>> xi = -1:3/19:2;>> yi = humps(xi);>> hold>> plot(xi,yi,'r.', 'markersize', 20)
Integrao Numrica
Exemplo: funo y=humps(x)
Integrao Numrica
Exemplo: funo y=humps(x)
Integrao Numrica
Exemplo: funo y=humps(x) Integrao usando 20 pontos:
>> area = trapz(xi,yi)
area = 26.4507
-
4Integrao Numrica
Exemplo: funo y=humps(x) Variando o nmero de pontos de integrao:
>> for N = 1:300,>> xi = -1:3/N:2;>> yi = humps(xi);>> area(N) = trapz(xi,yi);>> end>> plot(1:300, area)>> xlabel('N'), ylabel('area'), grid
Integrao Numrica
Exemplo: funo y=humps(x)
Integrao Numrica
Matlab: funo cumtrapz() z = cumtrapz(x,y) x: vetor de N elementos, crescentes y: vetor de N elementos, correspondentes aos
elementos do vetor x, definindo a funoy=f(x)
z: integral cumulativa numrica de y=f(x)
( ) ( )= xa
dxxfxA
Integrao Numrica
Exemplo: funo y=humps(x) Integrao cumulativa usando 200 pontos:>> xi = -1:3/199:2;>> yi = humps(xi);>> zi = cumtrapz(xi,yi);>> plot(xi,yi,'b', 'linewidth', 2)>> hold>> plot(xi,zi,'r', 'linewidth', 2)>> xlabel('N'), grid>> legend('f(x)', 'A(x)')
Integrao Numrica
Exemplo: funo y=humps(x)
Integrao Numrica
Exemplo: Navegao Inercial Acelermetro: mede a acelerao
instantnea a(t) de um objeto Velocidade Instantnea:
Posio Instantnea:
( ) ( )= t dttatv0
( ) ( )=t
dttvtx0
-
5Integrao Numrica
Exemplo: Navegao Inercial Experimento Realizado:
t (s) a (m/s2)0 01 22 43 74 115 176 247 328 419 4810 51
Integrao Numrica
Exemplo: Navegao Inercial Experimento Realizado:>> t = [0:10];>> a = [0,2,4,7,11,17,24,32,41,48,51];>> v = cumtrapz(t,a);>> x = cumtrapz(t,v);>> plot(t,a,t,v,t,x)>> xlabel('t(s)'), xlabel('t(s)'), grid>> legend('a(t)', 'v(t)', 'x(t)')
Integrao Numrica
Exemplo: Navegao Inercial
Integrao Numrica
Regra de Simpson: Aproximao porsegmentos de parbola Divide-se o intervalo [a,b] em 2n sub-intervalos
de igual largura x
Cada subintervalo definido por [xi,xi+x]
Define-se a funo de aproximao por trechosde parbola que conectam os valores da funof(x) nos extremos de cada intervalo
nabx
2=
xiaxi +=
Integrao Numrica
Regra de Simpson: Aproximao porsegmentos de parbola
Matlab: Funo quad: regra de Simpson Funo quadl: regra de Newton-Cotes
( ) ( ) ( ) ( )( ) ( ) ( )
+++++++=
nnn
o
xfxfxfxfxfxfxfxA
21222
321
42424
3L
Integrao Numrica
Matlab: funo quad() z = quad(FUN,a,b) FUN: ponteiro para a funo desejada a, b: limites inferior e superior de
integrao z: integral numrica de FUN(x),
correspondente rea A da funo nointervalo [a,b]
IMPORTANTE: a prpria funo quad (e aquadl) determina automaticamente onmero timo de intervalos
-
6Integrao Numrica
Exemplo: funo y=humps(x)
>> quad('humps', -1, 2)ans = 26.34496050120123
>> quadl('humps', -1, 2)ans = 26.34496047137897
Integrao Numrica
Integrao Bidimensional: funo dblquad() z = dblquad(FUN,xmin,xmax,ymin,ymax) FUN: ponteiro para a funo desejada xmin, xmax: limites inferior e superior de
integrao na varivel x ymin, ymax: limites inferior e superior de
integrao na varivel x z: integral numrica de FUN(x,y),
correspondente rea A da funo nointervalo [xmin,xmax], [ymin,ymax]
Integrao Numrica
Exemplo: funo y=func(x)
function z = func(x,y)z = sin(x).*cos(y) + 1;
x = 0:pi/19:pi;y = -pi:2*pi/19:pi;[X,Y] = meshgrid(x,y);Z = func(X,Y);mesh(X,Y,Z),xlabel('x'),ylabel('y')
Integrao Numrica
Exemplo: funo y=func(x)
Integrao Numrica
Exemplo: funo y=func(x,y)
>> dblquad(func,0,pi,-pi,pi)
ans =
19.73921476256606
Diferenciao
Derivada de uma funo f(x): Inclinao da reta tangente funo f(x)
-
7Diferenciao
Derivada de uma funo f(x): Taxa de variao da funo f(x) em relao
a x:
Diferenciao e Integrao so operaescomplementares:
( ) ( )dx
xdfxf =
( ) ( ) ( )xgdx
xdfxf == ( ) ( )= dxxgxf
Diferenciao
Derivada de uma funo f(x): Definio Formal:
( ) ( ) ( )x
xfxxfxfx
+= 0lim
Diferenciao Numrica
Aproximao da derivada da funof(x): Estima-se a derivada em um ponto xk
por meio da aproximao da inclinaoda tangente em xk:Utiliza valores da funo prximos a xk Diferenas Regressivas Diferenas Progressivas Diferenas Centrais
Diferenciao Numrica
Diferenas Regressivas: Inclinao da reta ligando (xk-1, f(xk-1)) a
(xk, f(xk))
( ) ( ) ( )1
1
=
kk
kkk xx
xfxfxf
( ) ( ) ( )x
xfxfxf kkk = 1
Diferenciao Numrica
Diferenas Progressivas: Inclinao da reta ligando (xk, f(xk)) a
(xk+1, f(xk+1))
( ) ( ) ( )kk
kkk xx
xfxfxf =
++
1
1
( ) ( ) ( )x
xfxfxf kkk = +1
Diferenciao Numrica
Observaes A diferena progressiva em xk idntica
diferena regressiva em xk+1
-
8Diferenciao Numrica
Observaes: A qualidade de ambas as aproximaes
depende fortemente de dois fatores: Espaamento entre as amostras Espalhamento nos dados devido a erros de
medio
Quanto maior o espaamento xk, maisdifcil a estimao da derivada
Diferenciao Numrica
Diferenas Centrais: Mdia entre as diferenas regressivas e
as diferenas progressivas
( ) ( ) ( ) ( ) ( )
+
= +x
xfxfx
xfxfxf kkkkk 1121
( ) ( ) ( )x
xfxfxf kkk = +
211
Diferenciao Numrica
Matlab: funo diff() dx = diff(x) x: vetor de dimenso N dx: vetor contendo as diferenas entre
os elementos de x, com dimenso N-1
dx = [x(2)-x(1) x(3)-x(2) ... x(n)-x(n-1)]
Diferenciao Numrica
Matlab: funo diff() Exemplo:
>> x = [0,1,2,3,4,5];>> y = [2,3,1,5,8,10];>> dx = diff(x)dx = 1 1 1 1 1
>> dy = diff(y)dy = 1 -2 4 3 2
Diferenciao Numrica
Matlab: funo diff() Aproximao para f(x):
>> df = dy./dx
df =
1 -2 4 3 2
Diferenciao Numrica
Matlab: funo diff() Os valores da aproximao para f(x) valem
tanto para as diferenas progressivasquanto para as diferenas regressivas
A diferena est em quais valores de x soatribudos aos valores de df
>> xr = x(2:end)xr = 1 2 3 4 5>> xp = x(1:end-1)xp = 0 1 2 3 4
-
9Diferenciao Numrica
Matlab: funo diff()>> xr = x(2:end);>> xp = x(1:end-1);>> plot(x, y, 'b.-', ... xr, df, 'r.-',xp,df, 'g.-')>> xlabel('x'), ylabel('y'), grid>> axis([-1 6 -3 11])>> legend('f(x)', 'f''(x)-Reg.', ... 'f''(x)-Prog.')
Diferenciao Numrica
Matlab: funo diff()
Diferenciao Numrica
Exemplo: Senide ruidosa>> x = [0:pi/50:pi]; n = length(x);>> yr = sin(x)+0.025*randn(1,n);>> td = cos(x);>> dyr_r = diff(yr)./diff(x);>> subplot(2,1,1),>> plot(x(2:n),td(2:n),x(2:n),dyr_r,'o')>> xlabel('x'), ylabel('Derivada')>> axis([0pi -2 2])>> legend('Derivada real','Diferenas Regressivas')
Derivada do sinal senoidal sem rudo
Diferenas Regressivas
Diferenciao Numrica
Exemplo: Senide ruidosa>>dyr_c = (yr(3:n)-yr(1:n-2))./(x(3:n)-x(1:n-2));>> subplot(2,1,2)>> plot(x(2:n-1),td(2:n-1),x(2:n-1),dyr_c, 'o')>> xlabel('x'), ylabel('Derivative')>> axis([0 pi -2 2])>> legend('Derivada real', 'Diferenas Centrais')
Diferenas Centrais
Diferenciao Numrica Diferenciao Numrica
-
10
Processamento de Sinais
Anlise de Dados Interpolao Regresso e Ajuste de Curvas Minimizao de Funes Integrao e Diferenciao Processamento Simblico
Processamento Simblico
At o momento: ProcessamentoNumrico Envolvendo dados numricos Representados por nmeros em ponto
flutuante com preciso dupla
Matlab: Tambm realiza ProcessamentoSimblico Manipulao de expresses matemticas,
como se estivesse usando papel e lpis Objetivo: obter solues em forma fechada
Processamento Simblico
Declarao de Variveis e Constantescomo Objetos Simblicos: Variveis:
>> syms x y Variveis Reais:
>> syms x y real Constantes:
>> pi = sym('pi')>> delta = sym('1/10')>> sqroot2 = sym('sqrt(2)')
Processamento Simblico
Declarao de Variveis e Constantescomo Objetos Simblicos:>> whosName Size Bytes Classdelta 1x1 132 sym objectpi 1x1 128 sym objectsqroot2 1x1 138 sym objectx 1x1 126 sym objecty 1x1 126 sym object
Grand total is 20 elements using 650 bytes
Processamento Simblico
Expresses Simblicas: Utilizam as variveis e constantes simblicas
definidas previamente Juntamente com os operadores e funes
pr-definidas do Matlab Exatamente como se estivesse fazendo um
clculo numrico
Processamento Simblico
Expresses Simblicas:>> syms s t A
>> f = s^2 + 4*s + 5 f = s^2+4*s+5
>> g = s + 2 g = s+2
-
11
Processamento Simblico
Expresses Simblicas:>> h = f*g h = (s^2+4*s+5)*(s+2)
>> z= exp(-s*t) z = exp(-s*t)
>> y = A*z y = A*exp(-s*t)
Processamento Simblico
Funo findsym: determina quais so osobjetos simblicos contidos em um outroobjeto simblico (ou expresso)
>> findsym(f)ans = s
>> findsym(z)ans = A, s, t
Processamento Simblico
Notao Matricial: tambm aplicvel noprocessamento simblico
>> n = 3;>> syms x>> B = x.^((0:n)'*(0:n))
Processamento Simblico
Notao Matricial: tambm aplicvel noprocessamento simblico
>> n = 3;>> syms x>> B = x.^((0:n)'*(0:n))
B =[ 1, 1, 1, 1][ 1, x, x^2, x^3][ 1, x^2, x^4, x^6][ 1, x^3, x^6, x^9]
Processamento Simblico
Manipulao de Expresses Polinomiais: expand(S): expanso da expresso simblica
polinomial S como um produto de seusfatores
factor(S): fatorao polinomial da expressosimblica polinomial S
simplify(S): simplificao da expressosimblica polinomial S
subs(S): substituio de variveis numden(S): forma racional do polinmio S
Processamento Simblico
Adio:
>> syms s>> A = s^4 -3*s^3 -s +2;>> B = 4*s^3 -2*s^2 +5*s -16;>> C = A + B
C =s^4+s^3+4*s-14-2*s^2
-
12
Processamento Simblico
Multiplicao Escalar:
>> A = s^4 -3*s^3 -s +2;>> C = 3*A
C =3*s^4-9*s^3-3*s+6
Processamento Simblico
Multiplicao:>> A = s+2;>> B = s+3;>> C = A*B
C =(s+2)*(s+3)
>> C = expand(C)C =s^2+5*s+6
Processamento Simblico
Fatorao:>> D = s^2 + 6*s + 9;>> D = factor(D) D = (s+3)^2
>> P = s^3 - 2*s^2 -3*s + 10;>> P = factor(P) P = (s+2)*(s^2-4*s+5)
Processamento Simblico
Denominador Comum:
( )sss
sH 3/212/1
36/1 +++=
( )sss
ssH34
223 ++
+=
Processamento Simblico
Denominador Comum:>> H = -(1/6)/(s+3) -(1/2)/(s+1) +(2/3)/s;>> [N,D] = numden(H)
N = s+2
D = (s+3)*(s+1)*s
>> D = expand(D)D =s^3+4*s^2+3*s ( )
sssssH
34223 ++
+=
Processamento Simblico
Cancelamento de Termos:
>> H = (s^3 +2*s^2 +5*s +10)/(s^2 + 5);>> H = simplify(H) H = s+2
( )5
10522
23
++++=
sssssH
-
13
Processamento Simblico
Cancelamento de Termos:
>> factor(s^3 +2*s^2 +5*s +10)ans =(s+2)*(s^2+5)
( )5
10522
23
++++=
sssssH ( ) 2+= ssH
Processamento Simblico
Substituio de Variveis:
( )86
32 ++
+=ss
ssH
( ) ( ) 2+== sssHsG
Processamento Simblico
Substituio de Variveis:>> H = (s+3)/(s^2 +6*s + 8);>> G = subs(H,s,s+2) G = (s+5)/((s+2)^2+6*s+20)
>> G = collect(G) G = (s+5)/(s^2+10*s+24) ( ) 2410
52 ++
+=ss
ssG
Processamento Simblico
Expresses Trigonomtricas:>> syms theta phi>> A = sin(theta + phi) A = sin(theta+phi)
>> A = expand(A) A = sin(theta)*cos(phi)+cos(theta)*sin(phi)
Processamento Simblico
Expresses Trigonomtricas:
>> B = cos(2*theta) B = cos(2*theta)
>> B = expand(B) B = 2*cos(theta)^2-1
Processamento Simblico
Expresses Trigonomtricas:
>> C = 6*((sin(theta))^2+(cos(theta))^2) C = 6*sin(theta)^2+6*cos(theta)^2
>> C = expand(C) C = 6*sin(theta)^2+6*cos(theta)^2
C = 6 !!!
-
14
Processamento Simblico
Expresses Trigonomtricas:>> syms theta real>> A = real(exp(j*theta)) A = 1/2*exp(i*theta)+1/2*exp(-i*theta)
>> A = simplify(A) A = cos(theta)
Processamento Simblico
Equaes Algbricas e Transcendentais funo solve(E1,E2,...,EN): encontra as
razes das expresses E1, E2, ..., EN
>> syms s>> E = s+2;>> s = solve(E) s = -2
Processamento Simblico
Equaes Algbricas e Transcendentais funo solve(E1,E2,...,EN): encontra as
razes das expresses E1, E2, ..., EN
>> syms s>> D = s^2 +6*s +9;>> s = solve(D) s = [ -3] [ -3]
Processamento Simblico
Equaes Algbricas e Transcendentais funo solve(E1,E2,...,EN): encontra as
razes das expresses E1, E2, ..., EN
>> P = s^3 -2*s^2 -3*s + 10;>> s = solve(P) s = [ -2] [ 2+i] [ 2-i]
Processamento Simblico
Equaes Algbricas e Transcendentais funo solve(E1,E2,...,EN): encontra as
razes das expresses E1, E2, ..., EN
>> syms theta x z>> E = z*cos(theta) - x;>> theta = solve(E,theta) theta = acos(x/z)
Processamento Simblico
Equaes Algbricas e Transcendentais funo solve(E1,E2,...,EN): encontra as
razes das expresses E1, E2, ..., EN
>> syms x>> E = exp(2*x) + 4*exp(x) -32;>> x = solve(E) x = [ log(-8)] [ log(4)]
-
15
Processamento Simblico
Clculo - Diferenciao funo diff: diff(E): diferencia a expresso simblica E em
relao varivel livre, determinadaautomaticamente
diff(E,v): diferencia a expresso simblica E emrelao varivel simblica v
diff(E,n): diferencia n vezes a expressosimblica E em relao varivel livre
diff(E,v,n): diferencia n vezes a expressosimblica E em relao varivel simblica v
Processamento Simblico
Clculo - Diferenciao>> syms s n>> p = s^3 + 4*s^2 -7*s -10;>> d = diff(p) d = 3*s^2+8*s-7>> e = diff(p,2) e = 6*s+8>> f = diff(p,3) f = 6
Processamento Simblico
Clculo - Diferenciao
>> g = s^n;>> h = diff(g) h = s^n*n/s
>> h = simplify(h) h = s^(n-1)*n
Processamento Simblico
Clculo - Diferenciao>> syms x>> f1 = log(x);>> df1 = diff(f1) df1 = 1/x
>> f2 = (cos(x))^2;>> df2 = diff(f2) df2 = -2*cos(x)*sin(x)
Processamento Simblico
Clculo - Diferenciao
>> f3 = sin(x^2);>> df3 = diff(f3) df3 = 2*cos(x^2)*x
>> df3 = simplify(df3) df3 = 2*cos(x^2)*x
Processamento Simblico
Clculo - Diferenciao
>> f4 = cos(2*x);>> df4 = diff(f4) df4 = -2*sin(2*x)
>> f5 = exp(-(x^2)/2);>> df5 = diff(f5) df5 = -x*exp(-1/2*x^2)
-
16
Processamento Simblico
Clculo - Integrao funo int: int(E): determina a integral indefinida da
expresso simblica E em relao varivellivre, determinada automaticamente. Se Econstante, integrao em relao varivel x
int(E,v): integral indefinida da expressosimblica E em relao varivel simblica v
int(E,a,b): integral definida da expressosimblica E com limites de integrao a e b
diff(E,v,a,b): integral definida da expressosimblica E em relao varivel simblica vcom limites de integrao a e b
Processamento Simblico
Clculo - Integrao
>> syms x n a b t
>> int(x^n) ans = x^(n+1)/(n+1)
>> int(x^3 +4*x^2 + 7*x + 10) ans = 1/4*x^4+4/3*x^3+7/2*x^2+10*x
Processamento Simblico
Clculo - Integrao
>> int(x,1,t) ans = 1/2*t^2-1/2
>> int(x^3,a,b) ans = 1/4*b^4-1/4*a^4
Processamento Simblico
Clculo - Integrao
>> syms x>> int(1/x) ans = log(x)
>> int(cos(x)) ans = sin(x)
Processamento Simblico
Clculo - Integrao
>> int(1/(1+x^2)) ans = atan(x)
>> int(exp(-x^2)) ans = 1/2*pi^(1/2)*erf(x)