Buscar

TP5 (2)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 47 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 47 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 47 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1TP5 Aplicacionais para Ciências e Engenharia
Aplicacionais para Ciências e 
Engenharia
Aula 5
2TP5 Aplicacionais para Ciências e Engenharia
Sumário
• Polinómios
– Operações com polinómios
– Aproximação polinomial
– Interpolação polinomial
3TP5 Aplicacionais para Ciências e Engenharia
Operações
4TP5 Aplicacionais para Ciências e Engenharia
– Um polinómio (ou expressão polinomial) é uma soma
algébrica de potências de uma dada variável, com o seguinte
formato:
onde são os coeficientes do polinómio e
são as potências da variável
‒ O grau do polinómio corresponde ao valor do expoente
( ), com
Nota: Este assunto não é novo para os alunos. Vamos mostrar
algumas operações e outras facilidades utilizando o Matlab
Definição
5TP5 Aplicacionais para Ciências e Engenharia
– A representação de polinómios no Matlab é feita através de um
vetor linha com os coeficientes do polinómio, ordenados de
a
– Caso não exista o monómio de uma dada potência deve ser
colocado um 0 (zero) na correspondente posição no vetor
– O número de elementos do vetor é igual a
Exemplo:
Representação de um polinómio
>> px=[4 0 0 -3 2 33]
px =
4 0 0 -3 2 33
6TP5 Aplicacionais para Ciências e Engenharia
Adição/Subtração de polinómios
– A adição e subtração de polinómios representados por vetores
só é possível se esses vetores tiverem o mesmo número de
coeficientes
Exemplo:
p1=[4 0 0 -3 2 33];
p2=[0 1 0 2 0 -13];
p1+p2
p1-p2
ans =
4 1 0 -1 2 20
ans =
4 -1 0 -5 2 46
7TP5 Aplicacionais para Ciências e Engenharia
Multiplicação de polinómios
– A multiplicação de polinómios é feita usando a função
conv()
Exemplo:
p1=[1 1];
p2=[1 -1];
pmul=conv(p1,p2)
pmul =
1 0 -1
8TP5 Aplicacionais para Ciências e Engenharia
Divisão de polinómios
– A divisão de polinómios pode ser feita usando a divisão
Euclidiana, o método de Descartes e outros
– No Matlab usamos a função deconv()
Exemplo 1:
(polinómio obtido no exemplo anterior)
p=[1 0 -1];
p2=[1 -1];
p1=deconv(p,p2)
p1 =
1 1
>> p1=[1 0 -1];
p2=[1 -1];
[p1 r]=deconv(p,p2)
p1 =
1 1
r =
0 0 0
% resto da div. igual a 0
9TP5 Aplicacionais para Ciências e Engenharia
Divisão de polinómios
Exemplo 2:
p=[2 7 4 9];
p1=[1 0 1];
[p2,r]=deconv(p,p1)
p2 =
2 7
r =
0 0 2 2
% verificação
>> p=conv(p1,p2)+r
p =
2 7 4 9
10TP5 Aplicacionais para Ciências e Engenharia
Outras operações
Cálculo das raízes de um polinómio – função roots()
– Um polinómio de grau tem raízes (valores de x para
os quais o polinómio é igual a zero)
– As raízes podem ser reais e/ou complexas
p=[3 -2 -4];
r=roots(p)
r =
1.5352
-0.8685
p=[1 0 0 0 -1];
r=roots(p)
r =
-1.0000 + 0.0000i
0.0000 + 1.0000i
0.0000 - 1.0000i
1.0000 + 0.0000i
11TP5 Aplicacionais para Ciências e Engenharia
Outras operações
Cálculo de um polinómio a partir das raízes – função poly()
– É possível determinar um polinómio a partir das suas raízes
p=poly([-1 2 1+i 1-i])
p =
1 -3 2 2 -4
% verificação
r=roots(p)
r =
-1.0000 + 0.0000i
2.0000 + 0.0000i
1.0000 + 1.0000i
1.0000 - 1.0000i
12TP5 Aplicacionais para Ciências e Engenharia
Outras operações
Avaliação do valor de um polinómio num ponto ou conjunto
de pontos – função polyval()
x=linspace(-2,3);
r=[-1 2]; % Raízes
p=poly(r); % Polinómio
fx=polyval(p,x)
plot(r,0,'*r',x,fx,'k')
grid on
xlabel('x'),ylabel('f(x)')
13TP5 Aplicacionais para Ciências e Engenharia
Outras operações
Derivação de um polinómio – função polyder()
px=[1 0 -2 5];
qx=polyder(px)
qx =
3 0 -2
14TP5 Aplicacionais para Ciências e Engenharia
Outras operações
Integração de um polinómio – função polyint()
O integral de um polinómio é um outro polinómio que derivado
resulta no polinómio inicial
px=[4 -3 0 1];
qx=polyint(px)
% o polyint não apresenta a constante de integração
qx =
1 -1 0 1 0
15TP5 Aplicacionais para Ciências e Engenharia
Outras operações
Uma das aplicações dos integrais é o cálculo de áreas debaixo de
uma curva entre dois pontos e . Neste caso o integral diz-se
definido, ao contrário do exemplo anterior em que o integral era
indefinido.
Considere o polinómio
px=[-1 0 4];
x=linspace(-2,2);
y=polyval(px,x);
plot(x,y),grid
xlabel('x')
ylabel('-x^2+4')
-2 -1 0 1 2
x
0
1
2
3
4
16TP5 Aplicacionais para Ciências e Engenharia
Outras operações
A área debaixo da curva da página anterior é calculada por:
qx=polyint(px,4)
% qx é o integral indefinido de px
% 4 é a constante de integração (valor de px para x=0)
Valores=polyval(qx,[-2 2])
% são os valores de q(x) calculados para x=-2 e x=2
Area=diff(polyval(qx,[-2 2]))
% Area corresponde ao valor do integral
% É igual à diferença –diff()- de qx para x=2 e x=-2
Valores =
-1.3333 9.3333
Area =
10.6667
17TP5 Aplicacionais para Ciências e Engenharia
Aproximação polinomial
18TP5 Aplicacionais para Ciências e Engenharia
Aproximação polinomial
– Os valores experimentais podem ser aproximados por uma
expressão matemática de forma a melhor descrever o
comportamento experimental
– A aproximação através de um polinómio é muito frequente,
sendo o ajuste dos coeficientes desse polinómio feito através
do método dos mínimos quadrados
– O método dos mínimos quadrados minimiza a soma dos
quadrados dos erros, para uma aproximação polinomial de
qualquer grau
– A exemplificação deste método pode ser facilmente percebido
através de uma aproximação linear (polinómio de grau 1)
19TP5 Aplicacionais para Ciências e Engenharia
Aproximação linear
– Da figura é fácil perceber que a
soma dos quadrados dos erros
depende da ordenada na origem
e do declive da reta
– Os valores de a e b são obtidos
através de um sistema de
equações em que a curva do erro
apresenta um valor mínimo
(valores para as quais a derivada
é nula)
x
y
e1
e2
e3
e4
– No gráfico são apresentados 4 pontos obtidos através de
medições experimentais de uma dada grandeza que queremos
aproximar por uma reta
20TP5 Aplicacionais para Ciências e Engenharia
Aproximação linear
A aproximação polinomial de curvas é uma matéria complexa
que está fora do âmbito desta unidade curricular. Fica, no entanto,
o exemplo de uma aproximação de 1º grau (reta) feita com
cálculo matricial
− Cada um dos pontos pode ser descrito, de uma forma geral,
por:
– e na forma matricial por:
= ou
21TP5 Aplicacionais para Ciências e Engenharia
Aproximação linear
– Para encontrar os valores de e que minimizam o erro
quadrático dado por:
ou na forma matricial:
calcula-se o valor mínimo do erro quando a sua derivada é
nula, obtendo-se o seguinte sistema de equações:
22TP5 Aplicacionais para Ciências e Engenharia
Aproximação linear
Exemplo 1: Considerando que os valores medidos numa dada
experiência foram:
calcule os valores de e da reta que melhor aproxima os dados.
Equação da reta:
x =[ 1 2 3 4 5 6 7 8 9 10]
y= [ 0.8 3.6 2.9 4.2 5.6 5.1 6.8 8.8 9.1 9.9]
x=[1 2 3 4 5 6 7 8 9 10];
y=[0.8,3.6,2.9,4.2,5.6,5.1,6.8,8.8,9.1,9.9];
X=[x' ones(1,10)'];
u=inv(X'*X)*X'*y'
u =
0.9527 % a=0.9527
0.4400 % b=0.4400
23TP5 Aplicacionais para Ciências e Engenharia
Aproximação polinomial
no Matlab
– A função polyfit() do Matlab permite fazer uma aproximação
polinomial de qualquer grau
Exemplo2: (mesmo do slide anterior)
xdata=[1 2 3 4 5 6 7 8 9 10];
ydata=[0.8,3.6,2.9,4.2,5.6,5.1,6.8,8.8,9.1,9.9];
plot(xdata,ydata,'ob'),xlabel('x'),hold on
x=0:10;
y=x;
plot(x,x,'--b'),xlim([0 10])
xlabel('xdata'),ylabel('ydata')
legend('Dados','y=x',...
'Location','NW')
A aproximação pela reta y=x será a
melhor? Não!
0 2 4 6 8 10
xdata
0
2
4
6
8
10
Dados
y=x
24TP5 Aplicacionais para Ciências e Engenharia
Aproximação polinomial
no Matlab
Erro grande para x=2 → grande contribuição no erro quadrático
médio (eqm) → erro não está minimizado (eqm=0.452)
xdata=[1 2 3 4 5 6 7 8 9 10];
ydata=[0.8,3.6,2.9,4.2,5.6,5.1,6.8,8.8,9.1,9.9];
subplot(2,1,1)
plot(xdata,ydata,'ob')xlabel('xdata'),hold on
y=xdata;
plot(xdata,y,'--b')
legend('Dados','y=x',...
'Location','NW')
erro=(ydata-y);
subplot(2,1,2)
bar(xdata,erro,0.5)
xlim([0.5 10.5])
ylim([-2 2])
xlabel('xdata')
legend('erro=ydata-y')
25TP5 Aplicacionais para Ciências e Engenharia
Aproximação polinomial
no Matlab
xdata=[1 2 3 4 5 6 7 8 9 10];
ydata=[0.8,3.6,2.9,4.2,5.6,5.1,6.8,8.8,9.1,9.9];
subplot(2,1,1)
plot(xdata,ydata,'ob')
xlabel('xdata'),hold on
% Aproximação linear
p=polyfit(xdata,ydata,1)
y=polyval(p,xdata);
plot(xdata,y,'-r')
legend('Dados’,’y=0.9527*x+0.4400','Location','NW')
erro=(ydata-y);
subplot(2,1,2)
bar(xdata,erro,0.5)
xlim([0.5 10.5])
ylim([-2 2])
xlabel('xdata')
legend('erro=ydata-y')
eq=sum((ydata-y).^2)
eqm=eq/length(ydata)
eqm=0.4012
26TP5 Aplicacionais para Ciências e Engenharia
Basic fitting
• O basic fitting é uma ferramenta (integrada na figura)
que permite realizar o ajuste polinomial de curvas de
maneira mais intuitiva
• Para utilizar o basic fitting, primeiro faça o gráfico
dos pontos
• Na janela do gráfico selecione:
Tools > Basic Fitting
• Para ver as equações polinomiais de ajuste, faça:
Show equations
27TP5 Aplicacionais para Ciências e Engenharia
Basic fitting
28TP5 Aplicacionais para Ciências e Engenharia
Basic fitting
• O Matlab tem uma ferramenta dedicada a fitting de dados com 
várias funções pré-definidas ou definidas pelo utilizador
– Extensas funcionalidades de condicionamento dos dados e análise dos 
resultados 
– Obriga à instalação da Curve Fitting Toolbox
29TP5 Aplicacionais para Ciências e Engenharia
Interpolação
30TP5 Aplicacionais para Ciências e Engenharia
Definição
• Considerando que temos um conjunto de pontos
definidos pelos valores de x e os correspondentes
valores de y
• Interpolação é um algoritmo que permite encontrar os
valores estimados de yi para um dado conjunto de
valores xi , localizados entre posições conhecidas dos
pontos ao longo do eixo x
31TP5 Aplicacionais para Ciências e Engenharia
Interpolação com polinómios
• Na interpolação em que temos N pontos é possível criar um
polinómio de grau N-1, que passa por todos os pontos, usando
a função polyfit() e calcular valores noutros pontos com
a função polyval().
-5 -4 -3 -2 -1 0 1 2 3
x
-4
-3
-2
-1
0
1
2
3
4
5
Dados
Interp. polinomial
32TP5 Aplicacionais para Ciências e Engenharia
Interpolação com polinómios
%Interpolação com polinómios
xdata=[-4.6,-4,-3,-1.6,-1,-0.4,0.8,1.6,2.2,2.6];
ydata=[-3.2,-1,2.5,1.3,0,-1.3,-2.6,-1.1,1.5,4.3];
plot(xdata,ydata,'ob','MarkerSize',8)
hold on
p=polyfit(xdata,ydata,(length(xdata))-1);
% Calcula os coeficientes do polinómio
xdatanew=min(xdata):0.2:max(xdata);
ydatanew=polyval(p,xdatanew);
plot(xdatanew,ydatanew,'.-r','MarkerSize',10)
grid on;
legend('Dados','Interp. com polinómios',...
'Location','NW')
xlabel('x');ylabel('y');
33TP5 Aplicacionais para Ciências e Engenharia
Interpolação com polinómios
• O grande problema da interpolação com polinómios é ser
altamente sensível à adição de novos dados
Exemplo:
– Adição de um ponto a azul
(-2,2.3) na figura, muito
próximo da curva a
vermelho
– A linha interpolada muda
completamente
– Esta situação é indesejável
– Problema: Aproximação por
polinómios de grau elevado
– Não tem interesse prático -5 -4 -3 -2 -1 0 1 2 3
x
-4
-3
-2
-1
0
1
2
3
4
5
Polinómio de grau 9
Polinómio de grau 10
34TP5 Aplicacionais para Ciências e Engenharia
Interpolação polinomial
%Interpolação com polinómios com mais um ponto
xdata1=[-4.6,-4,-3,-1.6,-1,-0.4,0.8,1.6,2.2,2.6];
ydata1=[-3.2,-1,2.5,1.3,0,-1.3,-2.6,-1.1,1.5,4.3];
p1=polyfit(xdata1,ydata1,(length(xdata1))-1);
% Cálcula os coeficientes do polinómio p1
xdata1new=min(xdata1):0.2:max(xdata1);
ydata1new=polyval(p1,xdata1new);
xdata2=[-4.6,-4,-3,-2,-1.6,-1,-0.4,0.8,1.6,2.2,2.6];
ydata2=[-3.2,-1,2.5,2.3,1.3,0,-1.3,-2.6,-1.1,1.5,4.3];
p2=polyfit(xdata2,ydata2,(length(xdata2))-1);
% Cálcula os coeficientes do polinómio p2
xdata2new=min(xdata2):0.2:max(xdata2);
ydata2new=polyval(p2,xdata2new);hold on
plot(xdata1new,ydata1new,'.-r','MarkerSize',10)
plot(xdata2new,ydata2new,'.-b','MarkerSize',10)
plot(xdata1,ydata1,'ob','MarkerSize',8)
plot(-2,2.3,'.b','MarkerSize',30);grid on
legend('Polinómio de grau 9','Polinómio de grau 10',...
'Location','NW')
xlabel('x'),ylabel('y');
35TP5 Aplicacionais para Ciências e Engenharia
Interpolação
• Critérios para uma boa interpolação
– Deve ser robusta à adição de novos pontos
– Novos pontos devem modificar a curva de interpolação em
intervalos adjacentes o mínimo possível (idealmente, não deve
haver nenhuma mudança)
36TP5 Aplicacionais para Ciências e Engenharia
Métodos de interpolação no MATLAB
37TP5 Aplicacionais para Ciências e Engenharia
Interpolação no Matlab
• O Matlab possui as seguintes funções de interpolação:
 interp1: Interpolação de dados numa dimensão
‒ interp2: Interpolação de dados em duas dimensões
– interp3: Interpolação de dados em três dimensões
– interpn: Interpolação de dados em 1-D, 2-D, 3-D e N-D
Nota: Estas funções têm vários tipos de interpolação. Para a sua
utilização deve ser consultado o help do Matlab
38TP5 Aplicacionais para Ciências e Engenharia
A função interp1
• Interpolação pelo método da vizinhança usando a
função interp1()
-5 -4 -3 -2 -1 0 1 2 3
x
-4
-3
-2
-1
0
1
2
3
4
5
Dados
Interpolação nearest com pontos adicionais
• Neste método a interpolação
toma um valor constante em
torno de um dado ponto,
num intervalo de metade da
distância que separa esse
ponto dos seus vizinhos
– Apresenta descontinuidades
– Método visualmente pouco 
apelativo
– Sem grande interesse
39TP5 Aplicacionais para Ciências e Engenharia
Método da vizinhança
% Interpolação nearest com pontos adicionais
xdata=[-4.6,-4,-3,-1.6,-1,-0.4,0.8,1.6,2.2,2.6];
ydata=[-3.2,-1,2.5,1.3,0,-1.3,-2.6,-1.1,1.5,4.3];
plot(xdata,ydata,'ob','MarkerSize',8),hold on
xdatanew=min(xdata):0.2:max(xdata);
ydatanew=interp1(xdata,ydata,xdatanew,'nearest');
plot(xdatanew,ydatanew,'.-r','MarkerSize',10)
xlabel('x'),ylabel('y'),grid on;
legend('Dados',...
'Interpolação nearest com pontos adicionais',...
'Location','NW')
40TP5 Aplicacionais para Ciências e Engenharia
A função interp1
• Interpolação linear, com pontos adicionais, usando a
função interp1()
-5 -4 -3 -2 -1 0 1 2 3
x
-4
-3
-2
-1
0
1
2
3
4
5
Dados
Interpolação linear com pontos adicionais
41TP5 Aplicacionais para Ciências e Engenharia
A função interp1
• Interpolação linear, com pontos adicionais, usando a
função interp1()
– Na interpolação linear (polinomial de 1º grau) com N pontos, os
N-1 intervalos são interpolados por uma linha reta que une os
pontos (xi, yi) e (xi+1, yi+1)
– Visualmente melhor que o método anterior
– A curva interpolada ainda não é suave
– O Matlab usa esta interpolação por defeito e também na função
plot()
42TP5 Aplicacionais para Ciências e Engenharia
A função interp1
• Interpolação linear, com pontos adicionais, usando a
função interp1()
% Interpolação linear com pontos adicionais
xdata=[-4.6,-4,-3,-1.6,-1,-0.4,0.8,1.6,2.2,2.6];
ydata=[-3.2,-1,2.5,1.3,0,-1.3,-2.6,-1.1,1.5,4.3];
plot(xdata,ydata,'ob','MarkerSize',8),hold on
xdatanew=min(xdata):0.2:max(xdata);
ydatanew=interp1(xdata,ydata,xdatanew,'linear');
plot(xdatanew,ydatanew,'.-r','MarkerSize',10)
xlabel('x'),ylabel('y'),grid on;
legend('Dados',...
'Interpolação linear com pontos adicionais',...
'Location','NW')
43TP5 Aplicacionais para Ciências e Engenharia
Interpolação cúbica segmentada
spline
• É utilizado, como curva de interpolação, um
polinómio de terceiro grau para cada i-ésimo intervalo
entre dois pontos de dados adjacentes
೔ ೔ ೔ ೔
– Produz uma curva de interpolação suave que é ..
– Relativamente imune à adição de novos pontos
• O Matlab usa quatro condições para determinar os
coeficientes
44TP5 Aplicacionais para Ciências e Engenharia
Interpolação cúbica segmentada
spline
• Algumas condições adicionais:
– O valor do polinómio em cada conjunto de pontos deve serigual às ordenadas desses pontos
– As derivadas de primeira ordem, para cada intervalo, devem 
ser contínuas à esquerda e à direita
45TP5 Aplicacionais para Ciências e Engenharia
Interpolação cúbica segmentada
spline
– As quatro equações anteriores são suficientes para encontrar
quatro coeficientes do polinómio a cada intervalo, exceto os
mais à esquerda e à direita
– Geralmente o método spline define as segundas derivadas nas
extremidades como zero
– O Matlab tem vários métodos de interpolação polinomial para
além do “linear” e “spline”
46TP5 Aplicacionais para Ciências e Engenharia
A função interp1
• Interpolação spline, com pontos adicionais, usando a
função interp1()
-5 -4 -3 -2 -1 0 1 2 3
x
-4
-3
-2
-1
0
1
2
3
4
5
Dados
Interpolação spline com pontos adicionais
47TP5 Aplicacionais para Ciências e Engenharia
A função interp1
• Interpolação spline, com pontos adicionais, usando a
função interp1()
% Interpolação spline com pontos adicionais
xdata=[-4.6,-4,-3,-1.6,-1,-.4,0.8,1.6,2.2,2.6];
ydata=[-3.2,-1,2.5,1.3,0,-1.3,-2.6,-
1.1,1.5,4.3];
plot(xdata,ydata,'ob','MarkerSize',8),hold on
xdatanew=min(xdata):0.2:max(xdata);
ydatanew=interp1(xdata,ydata,xdatanew,'spline');
plot(xdatanew,ydatanew,'.-r','MarkerSize',10)
xlabel('x'),ylabel('y'),grid on;
legend('Dados',...
'Interpolação spline com pontos adicionais',...
'Location','NW')

Outros materiais