Escolar Documentos
Profissional Documentos
Cultura Documentos
os coeficientes c
i
so solues do sistema abaixo de n+1 equaes algbricas lineares:
2
0 1 0 2 0 0 0
2
0 1 1 2 1 1 1
2
0 1 2
( )
( )
( )
n
n
n
n
n
n n n n n
c c x c x c x f x
c c x c x c x f x
c c x c x c x f x
+ + + + =
+ + + + =
+ + + + =
cujo determinante da matriz dos coeficientes:
2
0 0 0
2
1 1 1
2
1
1
1
n
n
n
n n n
x x x
x x x
V
x x x
=
chamado de determinante de Vandermonde, sendo no-nulo se x
i
= x
j
i = j.
O problema desta tcnica de determinao dos coeficientes a sua tendncia de
propagar os erros de arredondamento medida que os pontos nodais se aproximam uns
dos outros, pois o determinante de Vandermonde tende a zero nestas situaes, gerando
um sistema de equaes mal condicionado.
Exerccio: implementar o cdigo abaixo no MATLAB ou SCILAB para interpolar a
funo
senh( )
( )
senh( )
x
y f x
x
u
= =
u
que a soluo analtica do problema de reao com difuso em um partcula cataltica
esfrica isotrmica com reao de primeira ordem (x o raio adimensional e y a
concentrao adimensional). Utilizar como pontos nodais, pontos igualmente espaados
entre 0,1 e 0,9, com espaamento uniforme de 0,1 para o caso (a) e de 0,04 para o caso
(b). Aps obter o polinmio, interpolar a funo nos valores de 0 a 1 em intervalos de
0,01. Note que entre 0 e 0,1 e entre 0,9 e 1 os valores sero extrapolados. Comparar os
dois casos.
dx=0.1; % para o caso (a)
dx=0.04; % para o caso (b)
x=[0.1:dx:0.9]'; % pontos nodais
phi=5;
y=sinh(phi*x)./(x*sinh(phi)); % valor da funo nos pontos nodais
n=length(x); % nmero de pontos
xc=[0:0.01:1]'; % pontos para interpolao
m=length(xc);
yc(1)=phi/sinh(phi);
yc(2:m)=sinh(phi*xc(2:m))./(xc(2:m)*sinh(phi));
% formao da matriz de Vandermonde
Um=ones(n,1); % vetor de tamanho n x 1 com todos elementos iguais a 1
M=Um;
for i=1:n-1
M=[M x.^i];
end
C=inv(M)*y; % coeficientes polinomiais (inverso sem pivotamento)
% C=M\y; % coeficientes polinomiais (inverso com pivotamento
parcial)
pn1=C'*(Um*xc').^([0:n-1]'*ones(1,m)); % valores interpolados
%
% forma alternativa calcular os valores interpolados
%
%for i=1:m
% pn1(i)=C(n);
% for j=n-1:-1:1
% pn1(i)=pn1(i)*xc(i)+C(j);
% end
%end
condM=cond(M) % nmero de condicionamento da matriz dos coeficientes
plot(xc,yc,'b:',xc,pn1,'r',x,y,'o');
legend('exato','polinmio','pontos');
O resultado do exerccio acima mostrado na figura abaixo, onde se observa no caso (b)
o efeito dos erros de arredondamento devido inverso matricial sem pivotamento do
sistema de Vandermonde que neste caso mal condicionado. Este problema no
ocorreria se fosse realizada a inverso matricial com pivotamento (parcial ou total).
Caso (a)
Caso (b)
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
exato
polinmio
pontos
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
exato
polinmio
pontos
Outro aspecto sobre a formulao
0
( )
n
i
n i
i
p x c x
=
=
= + + + + +
requer um nmero bem menor de operaes de multiplicao (2n1 contra n(n+1)/2) e
pode ser implementada conforme o algoritmo:
p c
n
Para i = n1, n2, ..., 2, 1, 0, faa
p p x + c
i
Este algoritmo est implementado de forma comentada no cdigo acima.