You are on page 1of 47

Processamento de Sinais

MQI 2104 - Processamento e


Anlise de Sinais Digitais
Carlos Hall Sala 06 Ramal 1226
hall@ele.puc-rio.br

Anlise de Dados

Variveis Aleatrias
Gerao de Nmeros Aleatrios
Mximos e mnimos
Somas e Produtos
Anlise Estatstica

Variveis Aleatrias
Varivel Aleatria:
Entidade matemtica que representa os
possveis valores que uma determinada
medida pode assumir para cada medio, ou
observao
Varivel Aleatria Contnua: podem assumir
qualquer valor em um intervalo contnuo
Varivel Aleatria Discreta: s pode assumir
alguns valores de um conjunto discreto

Anlise de Dados
Interpolao
Regresso e Ajuste de Curvas
Integrao e Diferenciao
Minimizao de Funes
Processamento Simblico

Variveis Aleatrias
Muitas medies (seno todas) tm um
elemento de aleatoriedade
Estatstica: ramo da Matemtica Aplicada
que envolve anlise, interpretao e
apresentao de dados que incluem
algum grau de aleatoriedade ou incerteza
Estatstica Descritiva: resume ou
descreve as caractersticas mais
importantes de um conjunto de dados

Variveis Aleatrias
Populao: todos os possveis valores
que uma varivel aleatria pode assumir
Amostra: Conjunto finito de medidas ou
observaes.
Assumindo que foram feitas N observaes
de uma varivel aleatria, esta amostra pode
ser representada por um vetor x, com
elementos x(n), n = 1, ..., N

Variveis Aleatrias
Distribuio de Freqncia:
Indica as freqncias relativas com que os
possveis valores da varivel aleatria
ocorrem na populao
Caso discreto: Funo Distribuio de
Probabilidades (PDF)
x pode assumir os valores {X1, X2, ..., Xm}
PDF de Xk:

PDF ( X k ) = P(x = X k )

Variveis Aleatrias
Distribuio de Freqncia:
Indica as freqncias relativas com que os
possveis valores da varivel aleatria ocorrem
na populao
Caso contnuo: Funo Densidade de
Probabilidades (pdf)
x pode assumir qualquer valor no intervalo [-8 ,+8 ]
pdf de X: uma funo f(X) tal que
P( X 1 x X 2 ) =

X2

f ( X )dX

f ( X ) 0, X

Muitos problemas precisam usar nmeros


aleatrios no desenvolvimento de uma soluo
Em alguns casos, so usados para simular
solues de um problema, repetindo-se a
simulao diversas vezes (mtodo de
Montecarlo)
Em outros casos, so usados para representar
rudo, como o incidente em sinais de rdio
Matlab:

Gerao de Nmeros Aleatrios


Nmeros aleatrios so caracterizados
por suas distribuies de freqncia
Distribuio Uniforme:
Distribuio (pdf) Constante ao longo de sua
faixa de variao, entre os valores mnimo e
mximo
f(X)

Distribuio Uniforme
Distribuio Normal

Gerao de Nmeros Aleatrios


Distribuio Uniforme:
Matlab: distribuio uniforme em [0,1]
Funo rand
Na verdade, so seqncias pseudoaleatrias
A partir de uma semente, gera-se uma
seqncia

f ( X )dX = 1

X1

Gerao de Nmeros Aleatrios

Xmin

Xmax

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]

A mesma semente gerar a mesma seqncia!

Intervalo Real: [2-53, 1-2-53]

Gerao de Nmeros Aleatrios

Gerao de Nmeros Aleatrios


Matlab (exemplo):

Matlab:
s = rand(state): retorna um vetor de estado, com
35 elementos que caracterizam o gerador de
nmeros 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

>>
>>
>>
>>
>>

rand('state',0)
set1 = rand(10,1);
rand('state', 123)
set2 = rand(10,1);
[set1 set2]

ans =
0.9501
0.2311
0.6068
0.4860
0.8913
0.7621
0.4565
0.0185
0.8214
0.4447

0.0697
0.2332
0.7374
0.7585
0.6368
0.6129
0.3081
0.2856
0.0781
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;
data2 = rand(1,500)+3;
subplot(2,1,1), plot(data1),
subplot(2,1,2), plot(data2),

[2,4]
[3,4]
axis([0 500 0 6])
axis([0 500 0 6])

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)

Gerao de Nmeros Aleatrios

Gerao 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

Gerao 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


Distribuio Normal:

Distribuio Normal:

Funo Densidade de Probabilidade (pdf)


segue a funo gaussiana:
f (x ) =

1
2

( x )2
2 2

Representao: N(,)

Gerao de Nmeros Aleatrios

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)

Matlab: distribuio Normal N(0,1)


Mdia zero
Varincia Unitria

Funo randn
Na verdade, so seqncias pseudoaleatrias
A partir de uma semente, gera-se uma
seqncia
A mesma semente gerar a mesma seqncia!

Gerao de Nmeros Aleatrios


Matlab:
s = randn(state): retorna um vetor de estado, com
35 elementos que caracterizam o gerador de
nmeros 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

Gerao de Nmeros Aleatrios


Matlab (exemplo):
>>
>>
>>
>>
>>

randn('state',0)
set3 = randn(10,1);
randn('state', 123)
set4 = randn(10,1);
[set3 set4]

Gerao de Nmeros Aleatrios


randn: distribuio Normal N(0,1)
Para obter distribuies normais com outros
parmetros [,]
+ randn*

ans =
-0.4326
-1.6656
0.1253
0.2877
-1.1465
1.1909
1.1892
-0.0376
0.3273
0.1746

1.6056
-0.0416
1.2127
0.4977
-0.9253
0.6648
0.0013
-0.8141
-0.7747
-1.2441

Gerao de Nmeros Aleatrios

>>
>>
>>
>>

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])

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 correspondentes
de X e Y

Mximos e mnimos
Funes max e min
No exemplo anterior:

Mximos e mnimos
Funes max e min
No exemplo anterior: ans =

>> max(set1)
ans =
0.95010000000000

>> max(set1)
ans =
0.95010000000000

>> max([set1 set2])


ans =
0.95010000000000

>> max([set1 set2])


ans =
0.95010000000000

>> max(set1,set2)

0.95320000000000

>> max(set1,set2)

0.95010000000000
0.23320000000000
0.73740000000000
0.75850000000000
0.89130000000000
0.76210000000000
0.45650000000000
0.95320000000000
0.28560000000000
0.82140000000000
0.95320000000000

Anlise de Dados

Variveis Aleatrias
Gerao de Nmeros Aleatrios
Mximos e mnimos
Somas e Produtos
Anlise Estatstica

Mximos e mnimos
Funes max e min
No exemplo anterior:

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 cada
elemento o mnimo entre os elementos
correspondentes de X e Y

Mximos e mnimos
Funes max e min
No exemplo anterior: ans =

>> min(set1)
ans =
0.01850000000000

>> min(set1)
ans =
0.01850000000000

>> min([set1 set2])


ans =
0.01850000000000

>> min([set1 set2])


ans =
0.01850000000000

0.06970000000000

>> min(set1,set2)

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

>> min(set1,set2)

0.06970000000000
0.23110000000000
0.60680000000000
0.48600000000000
0.63680000000000
0.61290000000000
0.30810000000000
0.06970000000000
0.01850000000000
0.07810000000000
0.44470000000000

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 =
-2
kmin =
2

Anlise de Dados

Somas e Produtos

Variveis Aleatrias
Gerao de Nmeros Aleatrios
Mximos e mnimos
Somas e Produtos
Anlise Estatstica

Suponha x um vetor de N elementos:


sum(x): soma dos elementos do vetor x

sum( x ) =

x[k ]
N

k =1

prod(x): produto dos elementos do vetor x

prod (x ) = x[k ]
N

k =1

Somas e Produtos

Somas e Produtos

Suponha x um vetor de N elementos:


cumsum(x): soma cumulativa dos elementos
do vetor x, uma seqncia (vetor)

y[n] = cumsum(x[n]) =

x[k ]
n

k =1

prod(x): produto cumulativo dos elementos


do vetor x, uma seqncia (vetor)

y[n] = cumprod (x[n]) = x[k ]


n

k =1

Somas e Produtos
Exemplo:
Matlab:
>> N = 8;
>> k =1:N;
>> S = sum(k)
S =
36
>> N *(N+1)/2
ans =
36

k =

k =1

N (N + 1)
2

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
Soma dos Termos
de uma P.G.

Exemplo:
n!= n (n 1) (n 2)L 2 1

Fatorial de n

Matlab:
>> nfact4 = prod(1:4)
nfact4 =
24
>> nfact70 = prod(1:70)
nfact70 =
1.1979e+100

Anlise de Dados

Anlise Estatstica

Variveis Aleatrias
Gerao de Nmeros Aleatrios
Mximos e mnimos
Somas e Produtos
Anlise Estatstica

Distribuio de Freqncia:
Indica as freqncias relativas com que os
possveis valores da varivel aleatria
ocorrem na populao
Caso discreto: Aproximao da PDF
x pode assumir os valores {X1, X2, ..., Xm}
N observaes de x
N = N (X1 ) + N (X 2 ) + L + N (X m )
Freqncia Relativa de Xk:

Anlise Estatstica

Anlise Estatstica

Distribuio de Freqncia:

Matlab: funes hist() e bar()

Caso contnuo: Aproximao da pdf


x pode assumir qualquer valor no intervalo [X1,X2]
N observaes de x, m bins
Largura de cada bin:
X 2 X1
X =

N (X k )
~
PDF ( X k ) =
N

N(k) = nmero de amostras tais que


X 1 + (k 1)X X X 1 + kX

Freqncia Relativa do bin k: pd~f (k ) = N (k )

hist(x): calcula e exibe automaticamente o


histograma com 10 bins dos dados contidos
no vetor x
N = hist(x): calcula automaticamente e
retorna no vetor N o histograma com 10 bins
dos dados contidos no vetor x
N = hist(x,m): calcula e retorna no vetor N o
histograma 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 dados
contidos no vetor x, com o vetor xc definindo
os centros das bins
[N,xc] = hist(...): calcula automaticamente e
retorna no vetor N o histograma dos dados
contidos no vetor x, e no vetor xc o centros
das bins

Anlise Estatstica
Matlab: exemplo
subplot(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')

Anlise Estatstica

Anlise Estatstica
Matlab: exemplo
subplot(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() em
combinao 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 relativa
subplot(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')

10

Anlise Estatstica

Anlise Estatstica
Medidas de Tendncia Central
mean(): mdia amostral

x=

1
N

x(n )
n =1

median(): mediana valor central de um


conjunto ordenado de amostras
sort(x): ordena o vetor x de forma crescente

Anlise Estatstica

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
Medidas de Variao
std(): desvio padro amostral

1
2
(x(n ) x )
N 1 n =1

var(): varincia quadrado do desvio padro

Anlise Estatstica
Medidas de Variao
>> std(data3)
ans =
1.0475
>> std(data4)
ans =
2.8223

11

Anlise Estatstica

Processamento de Sinais

Interpolao
Definio: Estimao de um valor yi
correspondente a um determinado xi,
a partir de um conjunto disponvel de
pares (x,y)

Anlise de Dados
Interpolao
Regresso e Ajuste de Curvas
Integrao e Diferenciao
Minimizao de Funes
Processamento Simblico

Interpolao
Interpolao Linear:
1) Encontra o intervalo [x(k) x(k+1)] que
contm o valor xi

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:
2) Aplica a equao de interpolao

yi = y (k ) + m( xi x(k ))

m=

y (k + 1) y (k )
x(k + 1) x(k )

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 interpolao
linear
yi: vetor de M elementos, contendo os pontos
interpolados

12

Interpolao Linear

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
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 os


pontos para os quais deseja-se fazer a interpolao
linear
Zi: matriz de PxQ elementos, contendo os pontos
interpolados

13

Interpolao Cbica (Spline)


Mesmas premissas da interpolao
linear
Encontra o intervalo [x(k) x(k+1)] que
contm o valor xi
Ajusta um polinmio de grau 3 entre os
dois pontos
Oferece uma transio mais suave
O polinmio passa pelos dois pontos
As curvaturas e derivadas de polinmios
adjacentes so iguais

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 interpolao
por spline cbica
yi: vetor de M elementos, contendo os pontos
interpolados

Interpolao Cbica (Spline)

Interpolao Cbica (Spline)


Equao de Interpolao:

yi = a1 (xi x(k )) + a2 ( xi x(k )) + a3 ( xi x(k )) + a4


3

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

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)

14

Interpolao Cbica (Spline)

Interpolao Cbica (Spline)

Matlab: funo spline()


Mesmo exemplo:
>> xi = 0:0.01:5;
>> yi = spline(x,y,xi);
>> plot(xi,yi, 'r')

Interpolao Experimental
Medies experimentais bidimensionais:
muito comum fazer medies em posies
espaciais (ou temporais) no igualmente
espaadas
Normalmente armazenadas em uma matriz
de 3 colunas (X,Y e Z) e N linhas
(correspondentes aos valores medidos)
Para visualizao no Matlab, necessrio
que os dados estejam em formato de matriz

Interpolao Experimental
Matlab: funo griddata()

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
Exemplo: Campo Magntico Bz

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

15

Interpolao Experimental
Exemplo: Campo Magntico Bz

Interpolao Experimental
Exemplo: Campo Magntico Bz

157 pontos

Interpolao Experimental
Interpolao de Pontos Experimentais no
Matlab:

ye

be

1.3860
1.4035
1.4035
1.4386
1.4912
1.4737
1.4912
1.4912
1.4386
1.4561
1.4561
1.4386

-0.0604
-0.0704
-0.0810
-0.0832
-0.0824
-0.0803
-0.0507
-0.0219
0.0199
0.0617
0.0802
0.0909

.
.
.

Interpolao Experimental
Interpolao de Pontos Experimentais no
Matlab:

load medida.txt
xmin = min(xe); xmax = max(xe);
ymin = min(ye); ymax = max(ye);
N = 50;

[Xi Yi] = meshgrid(xi,yi);


Bi = griddata(xe, ye, be, Xi, Yi);
pcolor(Xi,Yi,Bi)
shading interp
xlabel('x'), ylabel('y')
axis([-3 3 -3 3])

xi = xmin:(xmax-xmin)/(N-1):xmax;
yi = ymin:(ymax-ymin)/(N-1):ymax;

Interpolao Experimental

xe

-1.7419
-1.5346
-1.3410
-1.2028
-0.9539
-0.6636
-0.3456
-0.1382
0.1106
0.4009
0.6083
0.8295

Processamento de Sinais

Anlise de Dados
Interpolao
Regresso e Ajuste de Curvas
Integrao e Diferenciao
Minimizao de Funes
Processamento Simblico

16

Processamento de Sinais

MQI 2104 - Processamento e


Anlise de Sinais Digitais
Carlos Hall Sala 06 Ramal 1226
hall@ele.puc-rio.br

Regresso e Ajuste de Curvas


A interpolao um mtodo local, que
considera os pontos mais prximos do
desejado
A regresso, ou ajuste de curvas, um
mtodo global, que determina a melhor
funo para o conjunto completo dos
dados disponveia
Ou seja, deseja-se encontrar a funo
y = f(x) que melhor se ajusta aos dados

Anlise de Dados
Interpolao
Regresso e Ajuste de Curvas
Integrao e Diferenciao
Minimizao de Funes
Processamento Simblico

Regresso e Ajuste de Curvas


Quantificao da qualidade do ajuste:
MSE: Mean Squared Error
RMSE: Root Mean Squared Error

MSE =

1
N

( y
k =1

yk )

RMSE = MSE
yk: valores reais da funo

yk: valores estimados pelo ajuste

Regresso e Ajuste de Curvas

Regresso e Ajuste de Curvas

Exemplo: Medidas de Temperatura ao


longo do tempo
Tempo (s)
Temp (C)
0
0
1
20
2
60
3
68
4
77
5
110

Exemplo: Medidas de Temperatura ao


longo do tempo
>>
>>
>>
>>
>>

t = 0:5;
T = [0 20 60 68 77 110];
plot(t, T, '.', 'markersize',20 )
xlabel('t(s)')
ylabel('T(C)')

Regresso e Ajuste de Curvas

Regresso e Ajuste de Curvas


Exemplo: Medidas de Temperatura ao
longo do tempo
Deseja-se fazer uma regresso linear
Ou seja, deseja-se ajustar aos dados uma
funo do tipo

T = at + b
Observando o grfico, nota-se que uma boa
aproximao poderia ser:

T = 20t

Regresso e Ajuste de Curvas

Regresso e Ajuste de Curvas


Exemplo: Medidas de Temperatura ao
longo do tempo
O quo bom o ajuste?
Clculo do MSE:
>>
>>
>>
>>

Regresso e Ajuste de Curvas


Exemplo: Medidas de Temperatura ao
longo 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)

T_ = 20*t;
e = T_ - T;
MSE = mean(e.^2)
RMSE = sqrt(MSE)

95.5
9.772

Regresso e Ajuste de Curvas


Ajuste por Mnimos Quadrados:
Clculo do MSE:
MSE =

T = at + b

MSE =

1
N

(Tk Tk )
N

1
N

k =1

(at k + b Tk )

k =1

Regresso e Ajuste de Curvas


Ajuste por Mnimos Quadrados:
MSE mnimo quando as derivadas parciais
em relao aos parmetros a e b so nulas:

Regresso e Ajuste de Curvas


Ajuste por Mnimos Quadrados:
MSE mnimo quando as derivadas parciais
em relao aos parmetros a e b so nulas:
MSE 2 N
=
(at k + b Tk )t k
a
N k =1

MSE
=0
b

MSE
=0
a

MSE 2
=
N
a
2
=
N

Regresso e Ajuste de Curvas


Ajuste por Mnimos Quadrados:
MSE mnimo quando as derivadas parciais
em relao aos parmetros a e b so nulas:
MSE 2
=
b
N

(at k2 + bt k Tk t k )
N

k =1

N 2 N N

t k a + t k b Tk t k = 0
=
1
=
1
k
=
1
k
k

Regresso e Ajuste de Curvas


Ajuste por Mnimos Quadrados:
MSE mnimo quando as derivadas parciais
em relao aos parmetros a e b so nulas:

(at k + b Tk )

k =1

N 2 N N

t k a + t k b Tk t k = 0
k =1 k =1 k =1

MSE 2 N
N
= t k a + Nb Tk = 0
b
N k =1
k =1

N
N
t k a + Nb Tk = 0
k =1
k =1

Regresso e Ajuste de Curvas


Ajuste por Mnimos Quadrados:
Em forma matricial:

2
tk
kN=1
t
k =1 k
N

Matlab: funo polyfit()


c = polyfit(x,y,M)

t k a t k Tk

k =1

Regresso e Ajuste de Curvas

= k =N1
b
N Tk
k =1

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 os


coeficientes do polinmio interpolador

Regresso e Ajuste de Curvas

Regresso e Ajuste de Curvas

Exemplo: Medidas de Temperatura ao


longo 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

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

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')

Processamento de Sinais

Anlise de Dados
Interpolao
Regresso e Ajuste de Curvas
Minimizao de Funes
Integrao e Diferenciao
Processamento Simblico

Minimizao de Funes

Sistemas Lineares

Considere uma funo real de n variveis:

Considere um sistema de M equaes


lineares de N variveis:

y = f (x ),

y , x n

Ax = b

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

A: matriz M x N
b: vetor M x 1
x: vetor N x 1

Sistemas Lineares

Sistemas Lineares

Considere um sistema de M equaes


lineares de N variveis:

Soluo do sistema de M equaes


lineares de N variveis:

a11
a
21
M

aM 1

a12
a22
M
aM 2

L a1N x1 b1
L a2 N x2 b2
=
O M M M

L aMN x N bM

A: matriz M x N
b: vetor M x 1
x: vetor N x 1

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

Sistemas Lineares

Soluo do sistema de M equaes


lineares de N variveis: Matlab

Exemplo:

Funo inv: inversa de matriz quadrada


x = inv(A) * b

Funo pinv: pseudo-inversa de matriz


retangular ou singular
x = pinv(A) * b

3 x1 + 2 x2 x3 = 10
x1 + 3 x2 + 2 x3 = 5
x1 x2 x3 = 1

operador \ - backslash
x = A \ b

Sistemas Lineares

Sistemas Lineares

Exemplo:

Exemplo: Matlab

3 2 1 x1 10
1 3 2 x = 5

2
1 1 1 x3 1
A

>> A = [3 2 -1; -1 3 2; 1 -1 -1]


>> b = [10 5 -1];
>> x = inv(A)*b
x =
26.0000
-18.0000
41.0000

Sistemas Lineares

Minimizao de Funes Lineares

Exemplo: Matlab

Considere um sistema de M equaes


lineares de N variveis:

>> A = [3 2 -1; -1 3 2; 1 -1 -1]


>> b = [10 5 -1];
A: matriz M x N
b: vetor M x 1
x: vetor N x 1

>> x = A\b
x =
26.0000
-18.0000
41.0000

E um sistema de M restries lineares de N


variveis (inequaes):
Cx = d

Minimizao de Funes Lineares


Considere um sistema de M equaes
lineares de N variveis:
Ax = b

Ax b
min
2

A: matriz M x N
b: vetor M x 1
x
x: vetor N x 1

Ax = b

, Cx d

E um sistema de M restries lineares de N


variveis (inequaes):
Cx = d

Minimizao de Funes Lineares


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 de


mnimos quadrados lineares com restries de
negatividade
Sintaxe: x = lsqnonneg(A, b);

Minimizao de Funes No-Lineares


Considere uma funo real no-linear
de n variveis:

y = f ( x ),

y , x

Minimizao de Funes No-Lineares


Exemplo para funo unidimensional:
Campo de um dipolo magntico para
y = 0, z = 1

Bx ( x ) =

onde f(.) uma funo no-linear


>>
>>
>>
>>

Minimizao de Funes No-Lineares


Exemplo para funo unidimensional:

3x 2 r 2
r5

r = x2 + z 2

x = -10:0.1:10;
[Bx,By,Bz] = campodip(x,0,1);
plot(x,Bx, 'linewidth', 2)
xlabel('x'), ylabel('Bx')

Minimizao de Funes No-Lineares


Algumas funes de minimizao nolinear do Matlab:

fminbnd
fzero
fsolve
lsqnonlin
lsqcurvefit

Diferem quanto ao tipo de minimizao


e o mtodo empregado
xmin

Minimizao de Funes No-Lineares


Algumas funes de minimizao do
Matlab:

fminbnd: minimizao de funo escalar nolinear limitada


fzero: busca de raiz de funo escalar nolinear
fsolve: resoluo de sistema de equaes nolineares 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 de
funo 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


Funo fminbnd: minimizao de
funo escalar no-linear limitada
Exemplo: Clculo de

Minimizao de Funes No-Lineares


Funo optimset: parmetros de
otimizao
options = optimset(@fminbnd)

>> x = fminbnd(@cos, 3, 4)
ans =
3.14159480185141

Minimizao de Funes No-Lineares


Funo optimset: parmetros de
otimizao

ActiveConstrTol: []
DerivativeCheck: []
Diagnostics: []
DiffMaxChange: []
DiffMinChange: []
Display: 'notify'
GoalsExactAchieve: []
GradConstr: []
GradObj: []
Hessian: []
HessMult: []
HessPattern: []
HessUpdate: []
Jacobian: []
JacobMult: []
JacobPattern: []
LargeScale: []

LevenbergMarquardt: []
LineSearchType: []
MaxFunEvals: 500
MaxIter: 500
MaxPCGIter: []
MaxSQPIter: []
MeritFunction: []
MinAbsMax: []
NonlEqnAlgorithm: []
Preconditioner: []
PrecondBandWidth: []
ShowStatusWindow: []
TolCon: []
TolFun: []
TolPCG: []
TolX: 1.0000e-004
TypicalX: []

Minimizao de Funes No-Lineares


Funo fminbnd: minimizao de
funo escalar no-linear limitada

options = optimset(@fminbnd)

Exemplo: Clculo de

>> options.MaxFunEvals
>> options.MaxIter
>> options.TolX

>> options.TolX = 1e-12;


>> x = fminbnd(@cos, 3, 4, options)
ans =
3.14159265402771
(3.14159480185141)

500
500
1e-4

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


Funo fminbnd:

Minimizao de Funes No-Lineares


Funo fminbnd:

>> x = fminbnd(@fun, -3, 3, options)


x =
-1.998401444325282e-015 (xmin = 0)

>> x = fminbnd(@fun, -3, 3, options)


x =
-1.998401444325282e-015 (xmin = 0)

>> x = fminbnd(@fun, -4, 4, options)


x =
-4 (mnimo local!)

>> x = fminbnd(@fun, -4, 4, options)


x =
-4 (mnimo local!)

Minimizao de Funes No-Lineares


Funo fzero: busca de raiz de funo
escalar no-linear

Minimizao de Funes No-Lineares


Funo optimset:
options = optimset(@fzero)

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!

>> options.TolX

2.22e-16

Exemplo: x = fzero(@sin, 3) ou
x = fzero('sin', 3)

Minimizao de Funes No-Lineares


Funo fzero: busca de raiz de funo
escalar no-linear

Minimizao de Funes No-Lineares


Funo fzero: busca de raiz de funo
escalar no-linear

Exemplo: Clculo de

Exemplo: Campo magntico

>> x = fzero(@sin, 3)
ans =
3.14159265358979

>> x = fzero(@fun, 1)
ans =
0.70710678118655

Minimizao de Funes No-Lineares


Funo fzero: busca de raiz de funo
escalar no-linear

Minimizao de Funes No-Lineares


Funo fzero: busca de raiz de funo
escalar no-linear

Exemplo: Clculo de

Exemplo: Campo magntico

>> x = fzero(@sin, 3)
ans =
3.14159265358979

>> x = fzero(@fun, -1)


ans =
-0.70710678118655

Minimizao de Funes No-Lineares


Funo fzero: busca de raiz de funo
escalar no-linear
Exemplo: Campo magntico

Minimizao de Funes No-Lineares


Funo fsolve: resoluo de sistema de
equaes no-lineares por mnimos
quadrados
Sintaxe: X = fsolve(FUN, X0);

>> x = fzero(@fun, -1)


ans =
-0.70710678118655

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 de
equaes no-lineares por mnimos
quadrados
Exemplo: Clculo de
>> x = fsolve(@sin, 3)
Optimization terminated successfully:
First-order optimality is less than
options.TolFun.
x =
3.14159265329799

10

Minimizao de Funes No-Lineares


Funo fsolve: resoluo de sistema de
equaes no-lineares por mnimos
quadrados
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 de
equaes no-lineares por mnimos
quadrados

Minimizao de Funes No-Lineares


Funo fsolve: resoluo de sistema de
equaes no-lineares por mnimos
quadrados
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


Exemplo para funo bidimensional:
Campo de um dipolo magntico para z = 1

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

Bx ( x ) =

3x 2 r 2
r5

Bx ( x ) =

3x 2 r 2
r5

r = x2 + y 2 + z 2

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);

r = x2 + y 2 + z 2

11

Minimizao de Funes No-Lineares


Funo fsolve: resoluo de sistema de
equaes no-lineares por mnimos quadrados

Minimizao de Funes No-Lineares


Funo fsolve: resoluo de sistema de
equaes no-lineares por mnimos quadrados

Exemplo: Campo magntico

Exemplo: Campo magntico

>> x = fsolve(@fun, [0.5 0.5], optimset('fsolve'))

>> x = fsolve(@fun, [1 1], optimset('fsolve'))

Optimization terminated successfully:


Gradient in the search direction less than
tolFun
Gradient less than 10*(tolFun+tolX)
x =
0.70710531298487
0.00194507200989

Optimization terminated successfully:


Search direction less than tolX
x =
1
1

Minimizao de Funes No-Lineares

Minimizao de Funes No-Lineares

Campo magntico 2D: infinitos zeros!


>>
>>
>>
>>

Campo magntico 2D: infinitos zeros!

contour(X,Y,Bx, [0 0], 'r')


grid
xlabel('x')
ylabel('y')

Minimizao de Funes No-Lineares


Funo lsqnonlin: resoluo de problemas de
mnimos 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

min x

[ FUN

(x )]

Minimizao de Funes No-Lineares


options = optimset(@lsqnonlin)
DerivativeCheck: 'off'
Diagnostics: 'off'
DiffMaxChange: 0.10000000000000
DiffMinChange: 1.000000000000000e-008
Display: 'final'
Jacobian: 'off'
JacobPattern: 'sparse(ones(jrows,jcols))'
LargeScale: 'on'
LevenbergMarquardt: 'on'
LineSearchType: 'quadcubic'
MaxFunEvals: '100*numberofvariables'
MaxIter: 400
MaxPCGIter: 'max(1,floor(numberofvariables/2))'
PrecondBandWidth: 0
TolFun: 1.000000000000000e-006
TolPCG: 0.10000000000000
TolX: 1.000000000000000e-006
TypicalX: 'ones(numberofvariables,1)'

12

Minimizao de Funes No-Lineares


Funo lsqnonlin: resoluo de problemas de
mnimos quadrados no-lineares
Exemplo: Caixa Preta

Minimizao de Funes No-Lineares


Funo lsqnonlin: resoluo de problemas de
mnimos quadrados no-lineares
Exemplo: Caixa Preta
R

CIRCUITO
ELETRNICO

Vin

Vout

Vin

Vout

Vout = Vin 1 exp

R
C

Minimizao de Funes No-Lineares


Funo lsqnonlin: resoluo de problemas de
mnimos quadrados no-lineares
Exemplo: Caixa Preta

Funo lsqnonlin: resoluo de problemas de


mnimos quadrados no-lineares
Exemplo: Caixa Preta

Vin = 5V
11 medidas de Vout, uma a cada segundo
t
Vout
0
1
2
3
4
5
6
7
8
9
10

Minimizao de Funes No-Lineares

0.014
3.186
4.337
4.775
4.884
4.966
4.985
4.963
5.004
4.978
5.028

Minimizao de Funes No-Lineares


Funo lsqnonlin: resoluo de problemas de
mnimos quadrados no-lineares

>> 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 de
mnimos quadrados no-lineares
Exemplo: Caixa Preta

Como descobrir R e C
a partir destas medidas
experimentais?

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;

13

Minimizao de Funes No-Lineares


Funo lsqnonlin: resoluo de problemas de
mnimos quadrados no-lineares
Exemplo: Caixa Preta

Minimizao de Funes No-Lineares


Funo lsqnonlin: resoluo de problemas de
mnimos 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)

>> 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)
Optimization terminated successfully:
Relative function value changing by less than OPTIONS.TolFun
X=
0.9938

Minimizao de Funes No-Lineares


Funo lsqnonlin: resoluo de problemas de
mnimos quadrados no-lineares

0.9938

Minimizao de Funes No-Lineares


Funo lsqnonlin: resoluo de problemas de
mnimos 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 lsqcurvefit: resoluo de problemas
de mnimos quadrados no-lineares (ajuste
de curva)

Minimizao de Funes No-Lineares


Funo lsqcurvefit: resoluo de problemas
de mnimos quadrados no-lineares
Exemplo: Caixa Preta

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

min x

function Vout = filtroRC2(X, t, Vin)


R = X(1);
C = X(2);
Vout = Vin * (1 exp(-t/(R*C)));

[ (FUN (x, xd ) yd ) ]
2

14

Minimizao de Funes No-Lineares


Funo lsqcurvefit: resoluo de problemas de
mnimos quadrados no-lineares

Minimizao de Funes No-Lineares


Funo lsqcurvefit: resoluo de problemas de
mnimos quadrados no-lineares

Exemplo: Caixa Preta

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)

>> 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)
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

15

Processamento de Sinais

MQI 2104 - Processamento e


Anlise de Sinais Digitais
Carlos Hall Sala 06 Ramal 1226
hall@ele.puc-rio.br

Anlise de Dados
Interpolao
Regresso e Ajuste de Curvas
Minimizao de Funes
Integrao e Diferenciao
Processamento Simblico

Integrao e Diferenciao

Integrao

Conceitos chave da rea de clculo


Fundamentais para resoluo de
muitos problemas de engenharia e
cincia
Em alguns casos h soluo analtica
Em outros casos, necessria a
soluo numrica

Integral de uma funo f(x), para x


variando entre a e b:
rea sob a curva, entre x=a e x=b

Integrao numrica
Diferenciao numrica

Integrao

Integrao

Integral de uma funo f(x), para x


variando entre a e b:

Integral de uma funo f(x), para x


variando entre a e b:

rea A sob a curva, entre x=a e x=b


b

A = f (x )dx
a

f(x): integrando
a: limite inferior de integrao
b: limite superior de integrao
x: varivel de integrao

soluo analtica:
encontrar a primitiva p(x) da funo f(x)

f (x ) p(x )

dp (x )
= f (x )
dx

calcular a funo p(x) em x = a e x = b


a integral ser dada por:

A = p(b ) p(a )

Integrao Numrica
Integral de uma funo f(x), para x
variando 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
Regra Trapezoidal: Aproximao por
segmentos de reta

Integrao Numrica
Integral de uma funo f(x), para x
variando 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 por
segmentos de reta

Divide-se o intervalo [a,b] em n sub-intervalos


de igual largura x
ba
x =
n
Cada subintervalo definido por [xi,xi+x]
xi = a + ix
Define-se a funo de aproximao por retas
que conectam os valores da funo f(x) nos
extremos de cada intervalo

Integrao Numrica
Regra Trapezoidal: Aproximao por
segmentos de reta

A=

Ai =

i =0

A=

x
( f (xi ) + f (xi +1 ))
i =0 2
n

x
( f (xo ) + 2 f (x1 ) + 2 f (x2 ) + L + 2 f (xn 1 ) + f (xn ))
2

Ai

Ai =

f (xi ) + f (xi +1 )
x
2

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 funo
y=f(x)
z: integral numrica de y=f(x), correspondente
rea A da funo no intervalo definido pelo
mnimo e pelo mximo do vetor x

Integrao Numrica
Exemplo: funo y=humps(x)
>>
>>
>>
>>
>>
>>

Integrao 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 usando 20 pontos:
>> area = trapz(xi,yi)
area =
26.4507

Integrao Numrica
Exemplo: funo y=humps(x)
Variando o nmero de pontos de integrao:
>>
>>
>>
>>
>>
>>
>>

Integrao Numrica
Exemplo: funo y=humps(x)

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
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 funo
y=f(x)
z: integral cumulativa numrica de y=f(x)
x

A( x ) = f ( x )dx
a

Integrao Numrica
Exemplo: funo y=humps(x)

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: Navegao Inercial
Acelermetro: mede a acelerao
instantnea a(t) de um objeto
Velocidade Instantnea:

v(t ) = a(t )dt


0

Posio Instantnea:

x(t ) = v(t )dt


0

Integrao Numrica
Exemplo: Navegao Inercial
Experimento Realizado:
t (s)
0
1
2
3
4
5
6
7
8
9
10

a (m/s2)
0
2
4
7
11
17
24
32
41
48
51

Integrao Numrica
Exemplo: Navegao Inercial

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
Regra de Simpson: Aproximao por
segmentos de parbola
Divide-se o intervalo [a,b] em 2n sub-intervalos
de igual largura x
ba
x =
2n
Cada subintervalo definido por [xi,xi+x]
xi = a + ix

Define-se a funo de aproximao por trechos


de parbola que conectam os valores da funo
f(x) nos extremos de cada intervalo

Integrao Numrica
Regra de Simpson: Aproximao por
segmentos de parbola

x f ( xo ) + 4 f ( x1 ) + 2 f ( x2 ) + 4 f ( x3 ) + L

A=
3 + 2 f ( x2 n 2 ) + 4 f (x2 n 1 ) + f (x2 n )

Matlab:
Funo quad: regra de Simpson
Funo quadl: regra de Newton-Cotes

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 no
intervalo [a,b]
IMPORTANTE: a prpria funo quad (e a
quadl) determina automaticamente o
nmero timo de intervalos

Integrao Numrica
Exemplo: funo y=humps(x)
>> quad('humps', -1, 2)
ans =
26.34496050120123
>> quadl('humps', -1, 2)
ans =
26.34496047137897

Integrao Numrica
Exemplo: funo y=func(x)

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 no
intervalo [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,y)

Diferenciao
Derivada de uma funo f(x):
Inclinao da reta tangente funo f(x)

>> dblquad(func,0,pi,-pi,pi)
ans =
19.73921476256606

Diferenciao

Diferenciao

Derivada de uma funo f(x):


Taxa de variao da funo f(x) em relao
a x:

f ( x ) =

df ( x )
dx

df (x )
= g (x )
dx

Definio Formal:

f ( x ) = lim

Diferenciao e Integrao so operaes


complementares:

f ( x ) =

Derivada de uma funo f(x):

x 0

f (x + x ) f ( x )
x

f ( x ) = g (x )dx

Diferenciao Numrica
Aproximao da derivada da funo
f(x):
Estima-se a derivada em um ponto xk
por meio da aproximao da inclinao
da tangente em xk:

Diferenciao Numrica
Diferenas Regressivas:
Inclinao da reta ligando (xk-1, f(xk-1)) a
(xk, f(xk))

f ( xk ) =

f ( xk ) f (xk 1 )
xk xk 1

f ( xk ) =

f ( xk ) f ( xk 1 )
x

Utiliza valores da funo prximos a xk


Diferenas Regressivas
Diferenas Progressivas
Diferenas Centrais

Diferenciao Numrica

Diferenciao Numrica

Diferenas Progressivas:

Observaes

Inclinao da reta ligando (xk, f(xk)) a


(xk+1, f(xk+1))

f ( xk ) =

f ( xk +1 ) f (xk )
xk +1 xk

f ( xk ) =

f ( xk +1 ) f ( xk )
x

A diferena progressiva em xk idntica


diferena regressiva em xk+1

Diferenciao Numrica

Diferenciao Numrica
Diferenas Centrais:

Observaes:
A qualidade de ambas as aproximaes
depende fortemente de dois fatores:

Mdia entre as diferenas regressivas e


as diferenas progressivas

1 f ( xk +1 ) f (xk ) f ( xk ) f (xk 1 )
f ( xk ) =
+

2
x
x

Espaamento entre as amostras


Espalhamento nos dados devido a erros de
medio

Quanto maior o espaamento xk, mais


difcil a estimao da derivada

f ( xk ) =

Diferenciao Numrica

Diferenciao Numrica
Matlab: funo diff()

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

Os valores da aproximao para f(x) valem


tanto para as diferenas progressivas
quanto para as diferenas regressivas
A diferena est em quais valores de x so
atribudos aos valores de df

>> df = dy./dx
df =
4

>> dy = diff(y)
dy =
1
-2

Matlab: funo diff()

Aproximao para f(x):

-2

Exemplo:
>> x = [0,1,2,3,4,5];
>> y = [2,3,1,5,8,10];
>> dx = diff(x)
dx =
1
1
1
1

Diferenciao Numrica

Matlab: funo diff()

f ( xk +1 ) f ( xk 1 )
2 x

>>
xr
>>
xp

xr = x(2:end)
=
1
2
xp = x(1:end-1)
=
0
1

Diferenciao 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

Diferenciao Numrica

Exemplo: Senide ruidosa

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

x = [0:pi/50:pi]; n = length(x);
yr = sin(x)+0.025*randn(1,n);
td = cos(x); Derivada do sinal senoidal sem rudo
Diferenas Regressivas
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')

Diferenciao Numrica

Diferenciao Numrica

Processamento de Sinais

Processamento Simblico

Anlise de Dados
Interpolao
Regresso e Ajuste de Curvas
Minimizao de Funes
Integrao e Diferenciao
Processamento Simblico

At o momento: Processamento
Numrico

Envolvendo dados numricos


Representados por nmeros em ponto
flutuante com preciso dupla

Matlab: Tambm realiza Processamento


Simblico
Manipulao de expresses matemticas,
como se estivesse usando papel e lpis
Objetivo: obter solues em forma fechada

Processamento Simblico
Declarao de Variveis e Constantes
como 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
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
Declarao de Variveis e Constantes
como Objetos Simblicos:
>> whos
Name
delta
pi
sqroot2
x
y

Size
1x1
1x1
1x1
1x1
1x1

Bytes
132
128
138
126
126

Class
sym object
sym object
sym object
sym object
sym object

Grand total is 20 elements using 650 bytes

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

10

Processamento Simblico
Expresses Simblicas:
>> h = f*g
h = (s^2+4*s+5)*(s+2)

Processamento Simblico
Funo findsym: determina quais so os
objetos simblicos contidos em um outro
objeto simblico (ou expresso)

>> z= exp(-s*t)
z = exp(-s*t)

>> findsym(f)
ans = s

>> y = A*z
y = A*exp(-s*t)

>> findsym(z)
ans = A, s, t

Processamento Simblico
Notao Matricial: tambm aplicvel no
processamento simblico
>> n = 3;
>> syms x
>> B = x.^((0:n)'*(0:n))

Processamento Simblico
Manipulao de Expresses Polinomiais:
expand(S): expanso da expresso simblica
polinomial S como um produto de seus
fatores
factor(S): fatorao polinomial da expresso
simblica polinomial S
simplify(S): simplificao da expresso
simblica polinomial S
subs(S): substituio de variveis
numden(S): forma racional do polinmio S

Processamento Simblico
Notao Matricial: tambm aplicvel no
processamento 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
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

11

Processamento Simblico

Multiplicao:

Multiplicao Escalar:

>> A = s+2;
>> B = s+3;
>> C = A*B
C =
(s+2)*(s+3)

>> A = s^4 -3*s^3 -s +2;


>> C = 3*A
C =
3*s^4-9*s^3-3*s+6

>> C = expand(C)
C =
s^2+5*s+6

Processamento Simblico
Fatorao:

Processamento Simblico
Denominador Comum:

>> D = s^2 + 6*s + 9;


>> D = factor(D)
D =
(s+3)^2

H (s ) =

>> P = s^3 - 2*s^2 -3*s + 10;


>> P = factor(P)
P =
(s+2)*(s^2-4*s+5)

1/ 6 1/ 2 2 / 3

+
s + 3 s +1
s

H (s ) =

Processamento Simblico
Denominador Comum:

s+2
s + 4 s 2 + 3s
3

Processamento Simblico
Cancelamento de Termos:

>> 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

Processamento Simblico

H (s ) =

s+2
s 3 + 4 s 2 + 3s

H (s ) =

s 3 + 2s 2 + 5s + 10
s2 + 5

>> H = (s^3 +2*s^2 +5*s +10)/(s^2 + 5);


>> H = simplify(H)
H =
s+2

12

Processamento Simblico
Cancelamento de Termos:

H (s ) =

s 3 + 2s 2 + 5s + 10
s2 + 5

Processamento Simblico
Substituio de Variveis:

H (s ) = s + 2

>> factor(s^3 +2*s^2 +5*s +10)


ans =
(s+2)*(s^2+5)

Processamento Simblico
Substituio de Variveis:

H (s ) =

s+3
s + 6s + 8
2

G (s ) = H (s ) s = s + 2

Processamento Simblico
Expresses Trigonomtricas:

>> H = (s+3)/(s^2 +6*s + 8);


>> G = subs(H,s,s+2)
G =
(s+5)/((s+2)^2+6*s+20)

>> syms theta phi


>> A = sin(theta + phi)
A =
sin(theta+phi)

>> G = collect(G)
G =
s+5
(s+5)/(s^2+10*s+24) G (s ) = s 2 + 10 s + 24

>> A = expand(A)
A =
sin(theta)*cos(phi)+cos(theta)*sin(phi)

Processamento Simblico
Expresses Trigonomtricas:

Processamento Simblico
Expresses Trigonomtricas:

>> B = cos(2*theta)
B =
cos(2*theta)

>> C = 6*((sin(theta))^2+(cos(theta))^2)
C =
6*sin(theta)^2+6*cos(theta)^2

>> B = expand(B)
B =
2*cos(theta)^2-1

>> C = expand(C)
C = 6 !!!
C =
6*sin(theta)^2+6*cos(theta)^2

13

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

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

Equaes Algbricas e Transcendentais

funo solve(E1,E2,...,EN): encontra as


razes das expresses E1, E2, ..., EN

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]

>> P = s^3 -2*s^2 -3*s + 10;


>> s = solve(P)
s =
[ -2]
[ 2+i]
[ 2-i]

Processamento Simblico
Equaes Algbricas e Transcendentais

Processamento Simblico
Equaes Algbricas e Transcendentais

funo solve(E1,E2,...,EN): encontra as


razes das expresses E1, E2, ..., EN

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)

>> syms x
>> E = exp(2*x) + 4*exp(x) -32;
>> x = solve(E)
x =
[ log(-8)]
[ log(4)]

14

Processamento Simblico
Clculo - Diferenciao
funo diff:
diff(E): diferencia a expresso simblica E em
relao varivel livre, determinada
automaticamente
diff(E,v): diferencia a expresso simblica E em
relao varivel simblica v
diff(E,n): diferencia n vezes a expresso
simblica E em relao varivel livre
diff(E,v,n): diferencia n vezes a expresso
simblica E em relao varivel simblica v

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

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
>> 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

>> f4 = cos(2*x);
>> df4 = diff(f4)
df4 = -2*sin(2*x)

>> df3 = simplify(df3)


df3 = 2*cos(x^2)*x

>> f5 = exp(-(x^2)/2);
>> df5 = diff(f5)
df5 = -x*exp(-1/2*x^2)

15

Processamento Simblico
Clculo - Integrao

Processamento Simblico
Clculo - Integrao

funo int:

int(E): determina a integral indefinida da


expresso simblica E em relao varivel
livre, determinada automaticamente. Se E
constante, integrao em relao varivel x
int(E,v): integral indefinida da expresso
simblica E em relao varivel simblica v
int(E,a,b): integral definida da expresso
simblica E com limites de integrao a e b
diff(E,v,a,b): integral definida da expresso
simblica E em relao varivel simblica v
com limites de integrao a e b

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

>> 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
>> 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)

16

You might also like