Matemática Computacional
 
Resumo da matéria [Versão 3.1]


[Capítulo 1] [Capítulo 2] [Capítulo 3] [Capítulo 4] [Capítulo 5]

Capítulo IV
 
Aproximação de Funções

Este capítulo será dividido em três secções principais:
  • (i) Interpolação
  • (ii) Mínimos Quadrados
  • (iii) Integração Numérica
A aproximação de funções pode ser considerada para substituir o cálculo moroso de uma função por funções mais simples. Num outro caso, quando não dispomos da função original, estes métodos permitem considerar uma aproximação da função baseada apenas em alguns pontos.

Interpolação

A interpolação polinomial é uma noção simples que apareceu naturalmente com o desenvolvimento do cálculo. Até há 50 anos atrás, os processos de cálculo eram limitados ao engenho manual, e a interpolação polinomial surgia como uma via simples na aproximação de funções complexas que eram normalmente listadas por tabelas, em alguns valores. Associada a Newton está uma fórmula recursiva para polinómios interpoladores, mas foi com Lagrange e Hermite que estas noções levaram a alguma sistematização. Nomeadamente, no final do séc. XIX, Runge e Chebyshev consideraram questões de instabilidade da aproximação polinomial.
Convém ainda referir que a interpolação para funções com mais que uma variável é ainda um problema actual, que surge em várias aplicações. Num exemplo simples de design automóvel foram desenvolvidas nos anos 60, na Renault, as curvas de Bézier. Grande parte da modelação actual assenta em elementos finitos enquanto base para a interpolação 2D ou 3D.

 
Iremos concentrar-nos apenas na interpolação dos valores de uma função (interpolação de Lagrange), sem ter em conta eventuais valores das suas derivadas (interpolação de Hermite).
Começamos por considerar um quadro geral, ainda assim apenas linear e para funções de uma variável. Concentramo-nos depois nos casos particulares de interpolação polinomial e trigonométrica.

Interpolação geral

    O caso geral aqui considerado assume que dispomos informação num número finito de pontos,
(x0, y0), ..., (xn, yn)∈ R2.
pretendendo encontrar uma função g num certo subespaço, tal que o gráfico de g intersecte estes pontos.
  • Os valores das abcissas x0, ..., xn são designados nós de interpolação e são todos distintos.
  • Os valores das ordenadas são os valores dados e que podem corresponder aos valores que uma função f, ou seja
    y0 = f(x0), ..., yn = f(xn).
O objectivo será:
  • Dado um subespaço de funções
    S = < φ0, ⋯ ,φm >
    (as funções φ0, ⋯ ,φm devem constituir uma base);
  • Encontrar uma função g∈ S, ou seja,
    g(x) = a0 φ0(x) + ⋯ +am φm(x)
    tal que g verifique
    g(x0) = y0, ..., g(xn) = yn,
    ou seja, g interpola os pontos dados − ou ainda, g interpola f nos nós dados.
O problema é linear e representado pelo sistema
  
a0 φ0(x0) + ⋯ +am φm(x0)= y0
a0 φ0(xn) + ⋯ +am φm(xn)= yn
  
onde há n+1 equações e os m+1 coeficientes a0, ⋯, am são as incógnitas.
Para que o sistema seja bem determinado consideramos m=n (nº funções base = nº pontos) e podemos representar matricialmente
   
φ0(x0)⋯ φn(x0)
⋮ 
φ0(xn)⋯ φn(xn)
   
 
a0
an
 
=
 
y0
yn
 
Se as funções base forem linearmente independentes no conjunto dos nós dados, então a matriz é invertível, e haverá solução única.
 
Relativamente ao caso geral o problema resume-se à resolução deste sistema (usualmente designado sistema de Vandermonde). No entanto, podemos ver que a solução deste sistema pode ser dada de forma explícita no caso da interpolação polinomial (as funções base são monómios).

Interpolação Polinomial

Considerando como funções base monómios,
φ0(x) = 1, φ1(x) = x, φ2(x) = x2, ⋯, φm(x) = xm;
o subespaço S será um espaço dos polinómios de grau ≤ m,
g(x) = a0 + a1x + a2x2 + ⋯ + amxm .
Assim, o sistema é dado por
    
1  x0⋯ (x0)n
1  x1⋯ (x1)n
⋮ 
1  xn⋯ (xn)n
    
 
a0
a1
an
 
=
 
y0
y1
yn
 
e podemos ver que no caso polinomial a matriz de Vandermonde é sempre invertível, desde que os nós de interpolação sejam distintos.
 
 
Teorema:
Dados n+1 nós de interpolação distintos, existe um e um só polinómio interpolador de grau ≤ n.
 
dem: Como o número de equações é igual ao número de incógnitas, resta ver que há unicidade para concluir que a matriz de Vandermonde é invertível.
Supondo que existiam dois polinómios interpoladores pn e qn com grau ≤ n. Então
pn(x0) = y0 = qn(x0)⇒ x0 é raiz de pn − qn
pn(xn) = yn = qn(xn)⇒ xn é raiz de pn − qn
Isto significa que o polinómio pn − qn (com grau ≤ n) tem n+1 raízes, logo só pode ser nulo e assim pn ≡ qn.

Fórmula de Lagrange

Podemos obter uma expressão explícita para o polinómio interpolador sem ser necessário resolver o sistema de Vandermonde, poupando ainda no número de operações.
 
Dado o conjunto dos nós de interpolação x0, ..., xn definimos os polinómios base de Lagrange Li: polinómios de grau n que verificam
Li(xj) = δij =
1se i=j
  
0se i≠ j
Pela definição, o polinómio Li terá x0, ..., xn como raízes − à excepção de xi. Isto significa que
Li(x) = C   n

j=0, j≠ i
(x − xj)
A condição no índice i permite retirar o valor de C, pois
1 = Li(xi) = C   n

j=0, j≠ i
(xi − xj) ⇒ C = 1 /   n

j=0, j≠ i
(xi − xj)
Concluímos assim que
Li(x) =   n

j=0, j≠ i
  x − xj
xi − xj
 
Proposição: O polinómio interpolador é dado pela Fórmula de Lagrange:
pn(x) =   n

i=0
yi Li(x)
ou seja,
pn(x) =   n

i=0
yi   n

j=0, j≠ i
  x − xj
xi − xj
 
dem: Resulta da expressão dos Li, uma vez que
pn(xj) =   n

i=0
yi Li(xj) =   n

i=0
yi δij = yj,
e portanto p_n interpola os valores dados.

 
Vimos dois processos de obter o polinómio interpolador, e iremos ver ainda um terceiro, através de diferenças dividas − a designada Fórmula de Newton.

Diferenças divididas

Uma diferença dividida de uma função f num conjunto de nós {x0, ⋯, xn} é denotada
f[x0,⋯,xn]
e dizemos que tem ordem n.
 
Podemos encarar como ordem 0, o valor da função no ponto f[x0] = f(x0).
Para ordem 1, corresponde à noção de razão incremental, e para ordens superiores generalizam esta noção.
  • Dados dois nós x0, x1 a diferença dividida de ordem 1 de f é
    f[x0,x1] =   f[x0] − f[x1]
    x0 − x1
  • dados três nós x0, x1, x2 a diferença dividida de ordem 2 de f é
    f[x0,x1,x2] =   f[x0,x1] − f[x1,x2]
    x0 − x2
  • ... e assim recursivamente:
  • Dados n+1 nós x0, ⋯, xn a diferença dividida de ordem n de f é
    f[x0,⋯,xn] =   f[x0,⋯,xn-1] − f[x1,⋯,xn]
    x0 − xn
A diferença divida de ordem n pode ainda ser caracterizada por ser o coeficiente de maior grau num polinómio de grau n.
 
Proposição: Para um qualquer polinómio pn=c0+⋯+cnxn temos
pn[x0,⋯, xn] = cn
(quaisquer que sejam os nós distintos x0,⋯, xn).
 
dem: Quando n=0 é trivial. Argumentamos por indução para n ≥ 1.
Consideramos dois polinómios interpoladores de pn:
  • qn-1(a)(x) = cn-1(a) xn-1+⋯ polinómio de grau ≤ n-1 interpolador de pn nos nós x0,⋯, xn-1;
  • qn-1(b)(x) = cn-1(b) xn-1+⋯ polinómio de grau ≤ n-1 interpolador de pn nos nós x1,⋯, xn;
Primeiro vemos que
pn(x) =   (x − xn)qn-1(a)(x) − (x − x0)qn-1(b)(x)
x0 − xn
pois a igualdade verifica-se para x = x0, ⋯, xn e o polinómio interpolador é único. Por hipótese de indução,
cn-1(a) = qn-1(a)[x0,⋯, xn-1] = pn[x0,⋯, xn-1]
cn-1(b) = qn-1(b)[x1,⋯, xn] = pn[x1,⋯, xn]
porque qn-1(a,b) interpolam pn. É assim claro que
cn =   cn-1(a)-cn-1(b)
x0 − xn
=   pn[x1,⋯, xn] − pn[x0,⋯, xn-1]
x0 − xn
= pn[x0,⋯, xn]
Observações:
(1) Quando pn é o polinómio interpolador de f nos nós x0,⋯, xn temos
cn = pn[x0,⋯, xn] = f[x0,⋯, xn]
pois os valores de f coincidem com os valores pn nesses nós.
(2) Consequentemente, e como o polinómio interpolador é único, é indiferente a ordem pela qual se consideram os nós nas diferenças divididas, ou seja
f[x0,⋯, xn] = f[xσ(0),⋯, xσ(n)]
onde σ é uma permutação em { 0, ⋯ , n } (por exemplo, f[x0,x1, x2] = f[x2,x0, x1]).
 
Para simplificar, assumimos uma ordenação dos nós x0 < ⋯ < xn.
 
Teorema: Seja f ∈ Cn[x0, xn], então existe ξ ∈ [x0, xn] :
f[x0, ⋯ , xn] =   f(n)(ξ)
n!
 
dem: Consideramos pn o polinómio interpolador de f nos nós x0,⋯, xn.
Então En = f − pn tem n+1 zeros: x0 < ⋯ < xn.
Pelo T. Rolle, En' tem n zeros: ξ0 < ⋯ < ξn em [x0, xn]
... e assim sucessivamente, até que (En)(n) tem um zero: ξ∈ [x0, xn].
Ou seja,
∃ ξ∈ [x0, xn]: 0 = (En)(n)(ξ) = f(n)(ξ) − cn n!
onde cn é coeficiente de maior grau de pn, e como pn é interpolador temos cn = f[x0,⋯, xn].
Observação:
Este resultado torna evidente a relação entre as diferenças divididas de ordem n e as derivadas de ordem n. Para além disso, é conveniente notar que no limite faz sentido considerar o mesmo ponto, pois
f[z,z] = limy→ z f[y,z] = f'(z)
e assim é possível utilizar diferenças divididas mesmo com nós repetidos.
Para n+1 repetições de x, obtemos
f[z,⋯, z] = f(n)(z)/n!.

Fórmula de Newton

Como consequência das noções anteriores, é fácil obter um outro processo para escrever o polinómio interpolador − a denominada Fórmula de Newton.
 
De facto, se considerarmos pn-1 o polinómio interpolador para os nós x0, ⋯, xn-1 podemos obter:
pn(x) = pn-1(x) + f[x0, ⋯, xn-1](x − x0)⋯(x − xn-1)
porque
  • pn(xi) = pn-1(xi) = yi para i = 0, ⋯, n-1.
  • o coeficiente de maior grau é f[x0, ⋯, xn-1];
Assim, este processo pode ser aplicado recursivamente até p0(x)=f[x0].
Abreviadamente, temos assim a Fórmula de Newton:
pn(x) =   n

k=0
f[x0,⋯,xk] (x − x0)⋯ (x − xk-1)

 
Observação:
Reparamos que se trata de uma expansão − associada à expansão de Taylor. De facto, se considerarmos que xk→ x0 então
pn(x) =   n

k=0
f[x0,⋯,x0] (x − x0)k =   n

k=0
f(n)(x0)/n! (x − x0)k
usando a relação entre derivadas e diferenças divididas. Vemos que pn é o polinómio de Taylor correspondente à expansão de f em x0.

Erro de interpolação polinomial

Conhecendo f, o erro de interpolação é definido como uma função E=f − pn , definida num qualquer ponto de avaliação z∈ [x0, xn]
E(z) = f(z) − pn(z).
Convém referir que podemos ainda considerar z∉ [x0, xn], ou seja z está fora do intervalo onde estão os nós − este processo é normalmente designado extrapolação.
Escrevemos [x0, xn; z] para designar o intervalo que contém os nós de interpolação e o ponto de avaliação.
 
Teorema: Temos as seguintes expressões para o erro de interpolação:
  • E(z) = f[x0,⋯, xn,z] (x − x0)⋯(x − xn)
  • Se f ∈ Cn+1[x0, xn; z], então existe ξ ∈ [x0, xn; z] :
    E(z) =   f(n+1)(ξ)
    (n+1)!
    (x − x0)⋯(x − xn)
  • Conclui-se a estimativa de erro:
    |E(z)| ≤   maxx∈[x0, xn; z] |f(n+1)(x)|
    (n+1)!
    |z − x0|⋯|z − xn|
 
dem:
Sendo pn o polinómio interpolador nos nós x0,⋯, xn, acrescentado z como novo nó, obtemos pela Fórmula de Newton:
pn+1(x) = pn(x) + f[x0,⋯, xn,z](x − x0)⋯(x − xn)
e como pn+1(z) = f(z), temos
f(z) = pn(z) + f[x0,⋯, xn,z](z − x0)⋯(z − xn)
concluindo-se a primeira igualdade.
Quando f ∈ Cn+1[x0, xn; z], então pela relação entre as diferenças divididas e as derivadas
∃ ξ ∈ [x0, xn; z] : f[x0,⋯, xn, z] = f(n+1)(ξ)/(n+1)!
ficando demonstrada a segunda igualdade.
 
Exemplo:
Considere a função dada por uma série
f(x) =  

k=1
1/(k3+x)
que assume os seguintes valores
x12345
f(x)0.6865030.5071610.413262 0.3542940.313232
Esta função não é fácil de calcular, pois envolve uma soma infinita em que a rapidez de convergência não é muito significativa.
Esta é uma situação em que pode ser aconselhável substituir o cálculo de f por uma aproximação dada por um polinómio interpolador.
Neste caso, o polinómio interpolador p4 é dado por
p4(x) = 1.03529 − 0.469887 x + 0.142074 x2 − 0.0223729 x3 + 0.0013954 x4
podendo ser obtido pela fórmula de Lagrange ou pela fórmula de Newton.
A derivação termo a termo, permite obter
f(5)(x) =  

k=1
-120(k3+x)-6   (a série é absolutamente convergente)
e temos
maxx∈ [1,5] |f(5)(x)| = |f(5)(1)| ≈ |-1.88| ≤ 2.
Conclui-se assim que
|E(z)| ≤   2
5!
|z − x0|⋯|z − xn|
Por exemplo, para z=3.5 obtemos |E(z)| ≤ 1.40625/60 = 0.02344, mas podemos mesmo constatar que a aproximação é melhor (tem sempre erros relativos inferiores a 0.5% nesse intervalo). Ver Figura 1.

Figura 1: Erro relativo entre a função f e a aproximação p4.
 
Notamos ainda que, conforme esperado, o erro é nulo nos nós de interpolação, e por outro lado tem maior amplitude próximo das extremidades do intervalo [1,5] do que no centro.

Observação complementar − Nós de Chebyshev

Quando procuramos aproximar uma função num intervalo [a,b], podemos considerar a interpolação usando n+1 nós igualmente espaçados,
xk = a + kh, com h=(b-a)/n,
mas esta escolha não se revela a mais eficaz.
Isto é ilustrado pelo exemplo de Runge, para a função
f(x) =   1
1+(5x)2
no intervalo [-1,1]
Como podemos ver na Figura 2A, a aproximação com n=16 é boa no centro mas detriora-se rapidamente nas extremidades do intervalo [-1,1], pois o polinómio de grau 16 apresenta grandes oscilações.

Figura 2A: Exemplo de Runge. Utilizando nós igualmente espaçados, o polinómio p16 (a vermelho) apresenta uma má aproximação da função f (a preto) nas extremidades do intervalo [-1,1].

 
O problema da má aproximação nas extremidades tem a ver com o comportamento da expressão que intervem no erro de interpolação
|W(x)| = |x − x0| ⋯ |x − xn|
Esta expressão não depende da função f, depende apenas da escolha dos nós, pelo que (conforme Chebyshev) constata-se que o valor |W| pode ser minimizado com uma escolha apropriada de nós no intervalo [-1,1]:
ck = cos (   (2k+1)π
2n+2
)   (k=0,⋯,n)
são os denominados nós de Chebyshev, que são as n+1 raízes de Tn+1, polinómios de Chebyshev, cuja expressão pode ser dada trigonometricamente
Tn(x) = cos( n arccos(x)).
É possível mostrar que
Tn+1(x) = 2n (x − c0) ⋯ (x − cn)
e assim concluir que para os nós de Chebyshev,
|W(x)| = |x − c0| ⋯ |x − cn| ≤ 2-n|Tn+1(x)| ≤ 2-n
sendo esta escolha de nós a que permite minimizar |W| na expressão do erro (no intervalo [-1,1] − a passagem para outro intervalo pode ser feita trivialmente por mudança de variável).
Na Figura 2B vemos a aproximação obtida considerando os nós de Chebyshev, que suprime o problema de instabilidade nas extremidades (por outro lado, piorando ligeiramente a aproximação central).

Figura 2B: Exemplo de Runge. Utilizando nós de Chebyshev, o polinómio p16 passando pelos nós de Chebyshev (verde) corrige a aproximação da função f (a preto) nas extremidades do intervalo [-1,1].

Observação complementar − Interpolação trigonométrica

A interpolação trigonométrica consiste numa aproximação em que as funções base são senos e co-senos, ao invés de monómios. No entanto, dada a relação trigonométrica nos complexos,
x = exp(It) = cos(t) + I sin(t) ⇒ xm = exp(Imt) = cos(mt) + I sin(mt)
a sua dedução pode ser facilitada considerando o contexto complexo.
(Para evitar confusões com índices i, escrevemos aqui o número imaginário como I)
 
O intervalo de referência será agora [0, 2π[ e as funções a aproximar são entendidas como periódicas (ie. f(0)=f(2π)), ainda que isso não seja necessário (trabalhamos apenas com valores discretos).
Consideramos
  • Os nós t0< ⋯ < tn-1, em [0, 2π[
  • As funções base monomiais complexas
    φk = xk = exp(I kt)
    procurando uma aproximação da forma
    q(t) = a0φ0(t) + ⋯ + an-1φn-1(t) = a0 + a1 eIt ⋯ + an-1 eI(n-1)t.
A matriz de Vandermonde fica assim
W=
    
1  x0⋯ (x0)n-1
1  x1⋯ (x1)n-1
⋮ 
1  xn-1⋯ (xn-1)n-1
    
=
    
1  exp(I t0)⋯ exp(I (n-1)t0)
1  exp(I t1)⋯ exp(I (n-1)t0)
⋮ 
1  exp(I tn-1)⋯ exp(I (n-1)tn-1)
    
Os nós igualmente espaçados são aqui apropriados (... as funções base são outras),
tk=2kπ/n
pois a matriz de Vandermonde W fica simétrica
Wij = (xi)j = exp(I tij) = exp(2π I ij/n)
ou seja,
W=
    
1  1⋯ 1
1  exp(2π I /n)⋯ exp(2π I (n-1)/n)
⋮ 
1  exp(2π I (n-1)/n)⋯ exp(2π I (n-1)2/n)
    
e sendo a=(a0,⋯,an-1), y=(y0,⋯,yn-1) obtemos o sistema linear
W a = y
A matriz W tem uma propriedade muito útil que relaciona a sua inversa com a adjunta W = W T.
 
Teorema: W W = n I (em que I é a matriz identidade).
 
dem:
Basta reparar que
[W W]ij =   n-1

k=0
Wik Wkj =   n-1

k=0
exp(2π I ik/n) exp(-2π I kj/n) =   n-1

k=0
exp(2π I k(i-j)/n)
definindo zij = exp(2π I (i-j)/n) ≠ 1, se i ≠ j, temos a soma da progressão geométrica
[W W]ij =   n-1

k=0
(zij)k =   1-zijn
1-zij
= 0
reparando que zijn=exp(2π I (i-j))=1.
Quando i=j temos zij = 1 e os termos da diagonal [W W]ii = n× 1 = n.
Concluímos assim que a matriz W é invertível com
W-1 = n-1 W.
Associada a esta noção temos uma outra:
 
Transformada de Fourier Discreta (TFD ou DFT): A transformada de Fourier discreta F transforma um vector
v=(v0, ⋯, vn-1) num vector com as mesmas dimensões dado pelas componentes
[ Fv ]k =   n-1

j=0
vj e-2π I jk/n,   (k=0,⋯,n-1).
Ou seja,
Fv = W v.
... e por outro lado concluímos que a inversa da TFD é simplesmente
F-1v = n-1 W v;
(alguns autores partilham o termo n-1, considerando n-1/2 na definição de directa e inversa).
 
Conclusão: A solução do problema de interpolação trigonométrica pode ser dada aplicando directamente a transformação de Fourier discreta sobre o vector dos dados y:
a = W-1y = n-1 Wy = n-1 Fy.

 
Observação:
1) Ao considerar o contexto complexo, os coeficientes são complexos. Há que ter algum cuidado extra na passagem para uma aproximação que envolva valores só reais, apenas com senos e co-senos (nomeadamente considerar um número ímpar de pontos...).
2) O número de operações na DFT é O(n2) mas pode ser reduzido para O(n log(n)) através do algoritmo FFT (Fast Fourier Transform) de Cooley-Tukey (apresentado nos anos 60, mas já era do conhecimento de Gauss...).

Método dos Mínimos Quadrados

Regressamos ao contexto da interpolação geral em que dispomos informação num número finito de pontos,
(x0, y0), ..., (xn, yn)∈ R2.
pretendendo encontrar uma função g∈ S,
S = < φ0, ⋯ ,φm >
ou seja,
g(x) = a0 φ0(x) + ⋯ + am φm(x),
mas em que m < n.
 
A grande diferença é que como m < n agora não podemos exigir que a função g passe pelos pontos dados. Apenas pretendemos minimizar (tanto quanto possível) a distância a esses pontos.
 
Para esse efeito temos que definir uma distância, e isso será feito através de um produto interno, relembrando que
dist(f,g) = ∥f − g∥ = √ < f − g, f − g >,
onde <⋅,⋅> representa o produto interno.
 
No caso dos mínimos quadrados discretos, usamos o produto interno habitual (para valores reais)
< u, v > =   n

k=0
u(xk) v(xk)
em que x0, ⋯, xn são os nós de colocação (distinguimos colocação de interpolação, pois não exigimos que haja interpolação).
 
Devemos ainda considerar que os valores y0, ⋯, yn podem resultar de uma função f, ou seja
yk = f(xk)   (para k=0,⋯,n)
e além disso, considerar mesmo a possibilidade de minimizar não apenas num conjunto finito de pontos, mas uma função f em todo um intervalo [a,b].
Nesse sentido falaremos do caso contínuo, e o produto interno será em L2[a,b], dado por
< u, v > = [a,b] u(x) v(x) dx

 
Observação: No caso complexo, o produto interno deve incluir o conjugado complexo, ou seja:
  • ( i) caso discreto:
    < u, v > =   n

    k=0
    u(xk) v(xk),
  • (ii) caso contínuo:
    < u, v > = [a,b] u(x) v(x) dx.

Sistema Normal

Em qualquer das situações (caso discreto ou contínuo) podemos desenvolver o processo de minimização de forma abstracta, sem ter em conta o produto interno específico, que está em causa.
 
Sendo
g = a0 φ0 + ⋯ + am φm,
o objectivo será minimizar a distância de f a g, ou seja, minimizar o resíduo
Q = dist(f,g) = ∥f − g∥ = √ < f − g, f − g >,
em termos dos coeficientes a0, ⋯, am.
 
Para esse efeito, pretendemos encontrar o ponto de mínimo de Q2 (será também de Q) que é ponto crítico, verificando
∇ Q2 = 0, ou seja,
  ∂ Q2
∂ a0
= 0 ,   ...   ,   ∂ Q2
∂ am
= 0
Isto corresponde a um sistema de equações
 
∂ ai
< f − g, f − g > = 0 ,   (i = 0, ... m) ,
(onde a dependência nos ai está exclusivamente em g.
Pela regra da derivação do produto temos
< 0 − ∂ g/∂ ai, f − g > + < f − g, 0 − ∂ g/∂ ai > = 0 ,   (i = 0, ... m) ,
e como ∂ g/∂ ai = φi e o produto comuta (nos reais), temos
-2 < f − g , φi > = 0 ,   (i = 0, ... m) ,
ou ainda
< g , φi > = < f , φi > ,   (i = 0, ... m) .
Assim, explicitando g obtemos o sistema de equações (denominado sistema normal)
a0< φ0, φi > + ⋯ + am< φm, φi > = < f , φi > ,   (i = 0, ... m) ,
que pode ser representado na forma matricial
   
00>⋯ m0>
⋮ 
0m>⋯ mm>
   
 
a0
am
 
=
 
< f, φ0>
< f, φm>
 
em a matriz S do sistema verifica:
 
Proposição: Se as funções base forem linearmente independentes, a matriz do sistema normal é simétrica e definida positiva.
 
dem:
A comutatividade do produto interno real implica a simetria.
A matriz S verifica (para qualquer v0)
vT S v =   n

i,j=0
viSijvj =   n

i,j=0
viij> vj = < g , g > ,   com g=  n

k=0
vkφk.
Portanto a matriz é definida positiva:
vT S v = ∥g∥2 > 0,
notando ainda que as funções base são linearmente independentes, e g=0 implicaria v=0.

Caso Discreto

No caso discreto, o sistema normal pode ainda ser obtido através do sistema sobredeterminado associado à interpolação.
Com efeito, o sistema sobredeterminado será
M a = y
   
φ0(x0)⋯ φm(x0)
⋮ 
⋮ 
φ0(xn)⋯ φm(xn)
   
 
a0
am
 
=
 
y0
yn
 
e multiplicando em ambos os lados por M obtemos um sistema m × m:
MM a = My
Com efeito a matriz S é MM, pois
[MM]ij =   n

k=0
φi(xkj(xk) = < φi, φj > = Sij
e da mesma forma
[My]i =   n

k=0
φi(xk) f(xk) = < f, φi > .
 
Exemplo (Regressão Linear):
Consideramos os pontos dados por
(xk, fk)   (com k = 0,⋯,N)
e procuramos aproximar estes valores por um polinómio de 1º grau
g(x) = a0 + a1 x ⇒ φ0(x)=1, φ1(x)=x
Obtemos o sistema
  
< 1,1>  < x,1>  
< 1,x>  < x,x>  
  
 
a0
a1
 
=
 
< f, 1>
< f, x>
 
onde
< 1, 1 > = N+1,   < 1, x > = < x, 1 > =   N

k=0
xk = (N+1)E(x)
(a notação E(x) designa a média de x),
< x, x > =   N

k=0
xk2 = (N+1)E(x2)
e ainda
< f, 1 > =   N

k=0
fk = (N+1)E(f),   < f, x > =   N

k=0
xk fk = (N+1)E(xf) .
Com as novas notações, o sistema fica
  
1E(x)
E(x )E(x2)
  
 
a0
a1
 
=
 
E(f)
E(xf)
 
e a solução do sistema é simples, tendo-se
(a0, a1) =   ( E(x2)E(f) − E(x)E(xf) , E(xf) − E(x)E(f) )
E(x2) − E(x)2
em que o denominador é a variância σ2 = Var(x) = E(x2) − E(x)2.

Caso Contínuo

Este caso é em tudo semelhante ao anterior, variando apenas o produto interno.
 
Exemplo 1: Um caso simples é aquele em pretendemos aproximar uma função por um polinómio, em que as funções base são definidas pelos monómios no intervalo [0,1]:
φk(x) = xk, com k=0,⋯,m
Então obtemos
Sij = < φi , φj > = [0,1] xi xj dx =   1
i+j+1
que é a denominada matriz de Hilbert:
S=
   
1⋯ 1/m
⋮ 
1/m⋯ 1/(2m+1)
   
As matrizes de Hilbert são mal condicionadas, tendo-se já para m=3 um valor elevado para o número de condição, Cond1(S) = 28375, (e para m=4 já atinge 943656).
Os termos do segundo membro são dados pelos integrais
< f, xi> =[0,1] xi f(x) dx.
Dependendo da complexidade de f poderá ser necessário calcular estas componentes através de integração numérica, se a primitivação não for exequível.
 
Exemplo 2: Suponhamos que pretendemos aproximar a função
f(x) = exp(x), no intervalo [0,1]
usando um polinómio de grau 1, g(x)=a+bx. Então basta resolver um sistema 2 × 2
   
1⋯ 1/2
1/3⋯ 1/3
   
 
a
b
 
=
 
[0,1] exp(x) dx = e − 1
[0,1] x exp(x) dx = 1
 
A solução deste sistema dá a melhor aproximação
g(x) = 4e − 10 + (18 − 6e)x
que minimiza o resíduo Q, ou seja:
Q ≥ ( [0,1] (f(x) − g(x))2 dx ) 1/2 = 0.06277

 
Observação: (Polinómios Ortogonais)
Como vimos há um problema de condicionamento nas matrizes do sistema normal, pelo que é conveniente poder evitar a resolução desse sistema. Um processo consiste em definir a matriz já na forma diagonal, bastando para isso que as funções base sejam ortogonais.
No entanto, se encontrar uma base de funções ortogonal é sempre possível pelo processo de ortogonalização de Gram-Schmidt, isso não é sempre praticável, sendo preferível ter um cálculo prévio.
Isso é exequível em certas situações particulares, como é o caso dos Polinómios de Legendre que são ortogonais para o produto interno contínuo no intervalo [-1,1}.
Os Polinómios de Legendre Pk podem ser dados de forma recursiva pela expressão
  • P0(x) = 1 , P1(x) = x,
  • Pn+1(x) =   (2n+1) x Pn(x) − n Pn-1(x)
    n+1
cujos termos seguintes são:
P2(x) = (3x2 − 1)/2, P3(x) = (5x3 − 3x)/2, ⋯

 
É ainda possível definir outros polinómios ortogonais, adaptados a outros produtos internos definidos com pesos de ponderação W.
Por exemplo, considerando uma função peso W positiva, definimos um produto interno
< u , v >W = [-1,1] W(x) u(x) v(x) dx.
O caso mais interessante é considerar como peso
W(x) = 1 / √  1 − x2
pois isso leva aos polinómios ortogonais de Chebyshev, que também podem ser descritos recursivamente
T0(x) = 1, T1(x) = x,
Tn+1(x) = 2 x Tn(x) − Tn-1(x)
tendo-se sucessivamente T2(x) = 2x2 − 1, T3(x) = 4x3 − 3x, ...
As raízes destes polinómios vão dar os nós de Chebyshev...
Referimos ainda que para outras funções de peso W é possível encontrar uma fórmula recursiva geral que gera uma base de polinómios ortogonais.
Sinteticamente, essa formula que gera polinómios ortogonais Gk é dada por
Gk+1(x) = (x − < x Gk, Gk >W ∥GkW-2 ) Gk(x) − ∥GkW2 ∥Gk-1W-2 Gk-1(x).

Integração Numérica

Um outro problema na aproximação de funções, diz respeito à aproximação de funções definidas por integrais. Primeiro, porque poderá acontecer que o integral não tenha uma primitiva explícita ou conhecida, depois porque esse cálculo pode ser computacionalmente moroso e menos eficaz do que a aplicação de regras numéricas.
 
Seja f∈ C[a,b]. Para a aproximação do integral
I(f) = [a,b] f(x) dx,
definimos uma fórmula de integração (ou regra de quadratura)
Q(f) = w0 f(z0) + ⋯ + wm f(zm)
em que designamos wk como pesos de integração e zk como nós de integração.
Estes valores − pesos e nós − podem ser calculados de forma a que o resultado Q(f) seja exacto, igual a I(f), para certas funções base f.
Normalmente usam-se como funções base os monómios, pretendendo que a fórmula seja exacta para polinómios de um determinado grau, levando à seguinte definição.
 
Definição: Dizemos que uma regra de quadratura Q tem pelo menos grau p se for exacta para polinómios de grau ≤ p.
Ou seja, a regra tem pelo menos grau p se for exacta para monómios xk,
I(xk) = Q(xk)   (para k=0,⋯,p).
Terá exactamente grau p se tiver pelo menos grau p e não tiver grau p+1, ou seja, se verificar I(xp+1)≠ Q(xp+1).
 
Esta definição leva ainda a um método para definir as regras de quadratura − o denominado Método dos Coeficientes Indeterminados.

Método dos Coeficientes Indeterminados

A verificação de que uma regra tem grau p leva a p+1 equações:
(P){  
I(1) = Q(1) ⇔b − a= [a,b] 1 dx = w0 + ⋯ + wm
I(x) = Q(x) ⇔(b2 − a2)/2= [a,b] x dx = w0z0 + ⋯ + wmzm
I(xp) = Q(xp) ⇔(bp+1 − ap+1)/(p+1)= [a,b] xp dx = w0z0p + ⋯ + wpzmp
onde podemos distinguir duas situações:
  • os nós de integração são conhecidos − sistema linear nos pesos;
  • os nós e os pesos de integração são desconhecidos − sistema não linear em ambos;
Caso Linear.
Começamos por analisar o caso do sistema linear, supondo que os nós
z0, ⋯, zm   são conhecidos/dados.
Então, para que a regra de quadratura tenha pelo menos grau m, obtemos o sistema linear
    
1  1  1  
z0  z1  zm  
 
(z0)m  (z1)m  (zm)m  
    
 
w0
w1
wm
 
=
 
b − a
(b2 − a2)/2
(bm+1 − am+1)/(m+1)
 
em que a matriz (m+1) × (m+1) é a transposta da matriz de Vandermonde (e portanto é invertível).
  • Exemplo − Regra dos Trapézios
    Considerando z0=a, z1=b obtemos um sistema linear 2 × 2:
      
    1  1  
    a  b  
      
     
    w0
    w1
     
    =
     
    b − a
    (b2 − a2)/2
     
    com solução w0=w1=(b − a)/2 o que dá
    T(f) =   b − a
    2
    ( f(a) + f(b) ) [Regra dos Trapézios].
  • Exemplo − Regra de Simpson
    Considerando z0=a, z1=(a+b)/2, z2=b obtemos um sistema linear 3 × 3:
       
    1  1  1  
    a  (a+b)/2  b  
    a2  (a+b)2/4  b2  
       
     
    w0
    w1
    w2
     
    =
     
    b − a
    (b2 − a2)/2
    (b3 − a3)/3
     
    com solução w0=(b − a)/6, w1=4w0, w2=w0 o que dá
    S(f) =   b − a
    6
    ( f(a) + 4 f((a+b)/2)+ f(b) ) [Regra de Simpson].
  • Por construção, a Regra dos Trapézios tem pelo menos grau 1, e como I(x2)≠ T(x2), tem exactamente grau 1.
  • A construção da Regra de Simpson garante pelo menos grau 2, mas pode verificar-se que I(x3)= T(x3), verificando-se que tem grau 3.

 
Caso não Linear.
No caso de não serem dados os nós de integração, estes são considerados como m+1 novas variáveis, e o sistema (P) é não linear.
Havendo 2m+2 graus de liberdade, podemos considerar 2m+2 equações e como tal a verificação de que a regra de quadratura terá grau 2m+1.
O caso mais simples será considerar apenas um nó z0
Q(f) = w0 f(z0)
e vemos que é possível obter w0 e z0 de forma a que a regra tenha grau 1:
I(1) = Q(1) ⇔b − a= w0
I(x) = Q(x) ⇔(b2 − a2)/2= w0 z0
ou seja, obtemos w0 = b − a e z0 = (b + a)/2,
Q(f) = (b − a) f (   b + a
2
) [Regra do Ponto-Médio]

 
- O caso não linear será aprofundado mais tarde, no contexto das Fórmulas de Gauss.
 
- Começamos por considerar o caso linear, em que os nós são igualmente espaçados (denominadas fórmulas de Newton-Cotes). Em particular, iremos abordar os casos da Regra dos Trapézios e da Regra de Simpson, começando por analisar as regras simples e depois as regras compostas. Vamos distinguir duas noções
  • Regras Simples : são as regras deduzidas para um intervalo de referência.
  • Regras Compostas : são regras resultantes de dividir o intervalo inicial em sub-intervalos, aplicando as regras simples aos sub-intervalos.

Integração da Fórmula de Lagrange

Um processo de obter os pesos sem recorrer à resolução do sistema linear, é considerar a integração do polinómio interpolador. Dados os nós de integração z0, ⋯, zm, e sendo pm o polinómio interpolador da função f, obtemos pela fórmula de Lagrange:
pm(x) = f(z0) L0(x) + ⋯ + f(zm) Lm(x)
portanto
I(pm) = f(z0) I(L0) + ⋯ + f(zm) I(Lm).
Para que a fórmula de quadratura seja exacta para um polinómio interpolador nestes nós, teremos então
w0 = I(L0) = [a,b]L0(x)dx, ⋯, wm = I(Lm) = [a,b]Lm(x)dx.
Exemplos:
  • Regra dos Trapézios. Os nós são z0=a, z1=b, e portanto usando o polinómio interpolador p1 obtemos
    T(f) = I(p1) = f(a) [a,b]   x-b
    a-b
    dx + f(b) [a,b]   x-a
    b-a
    dx = f(a) (b-a)/2 + f(b) (b-a)/2
  • Regra de Simpson. Os nós são z0=a, z1=c, z2=b, (com c=(a+b)/2), e portanto usando o polinómio interpolador p2 obtemos
    S(f) = I(p2) = f(a) [a,b]   x-c
    a-c
      x-b
    a-b
    dx + f(c) [a,b]   x-a
    c-a
      x-b
    c-b
    dx + f(b) [a,b]   x-a
    b-a
      x-c
    b-c
    dx
    = f(a) (b-a)/6 + 4 f(c) (b-a)/6 + f(b) (b-a)/6
Convém ainda notar que como a Regra de Simpson tem grau 3, é ainda válida a igualdade
I(p3) = S(p3) = S(f)
para qualquer polinómio de grau ≤ 3 que interpole a função f nos nós a, c, b. Isto será utilizado na dedução da fórmula do erro na Regra de Simpson.
 
Iremos de seguida analisar o erro de integração, sendo necessário o seguinte resultado:
 
Teorema (valor intermédio para integrais)
Consideremos duas funções F ∈ C[a,b] e G integrável não mudando de sinal em [a,b]. Existe ξ∈[a,b]:
[a,b] F(x) G(x) dx = F(ξ) [a,b] G(x) dx.
 
dem: Sem perda de generalidade, seja G≥ 0:
(min[a,b] F) [a,b] G(x) dx ≤ [a,b] F(x) G(x) dx ≤ (max[a,b] F) [a,b] G(x) dx.
Pelo Teorema do valor intermédio, para a função
H(x)= F(x) I(G), com I(G) = [a,b] G(x) dx
há pelo menos um ξ∈[a,b]:
H(ξ) = [a,b] F(x) G(x) dx.

Erro de Integração (Regras Simples)

O erro de integração é dado pela diferença entre o valor exacto e aproximado:
E(f) = I(f) − Q(f).
Tendo estabelecido uma relação com um polinómio interpolador, da forma
Q(f) = I(pm)
em que m é o grau da fórmula, podemos obter:
E(f) = I(f) − I(pm) = I(f − pm)
reduzindo o erro de integração à integração do erro de interpolação.
  • Erro da Regra dos Trapézios (Simples).
    Neste caso, os dois nós são a, b, e o polinómio interpolador é p1. Relembrando o erro de interpolação:
    f(x) − p1(x) = f[a,b,x](x-a)(x-b)
    obtemos
    ET(f) = [a,b] f(x) − p1(x) dx = [a,b] f[a,b,x](x-a)(x-b) dx
    e como G(x)=(x-a)(x-b) nunca é positiva em [a,b], obtemos pelo Teorema do valor intermédio para integrais:
    ∃ ξ ∈ [a,b] : ET(f) = f[a,b,ξ] [a,b] (x-a)(x-b) dx
    Quando f ∈ C2[a,b] podemos relacionar com a 2ª derivada, e como I(G)=(a-b)3/6 obtemos
    ET(f) = − f ''(ξ)/12 (b − a)3

     
  • Erro da Regra de Simpson (Simples).
    Neste caso, há três nós a, c, b, e o polinómio interpolador é p2. Relembrando o erro de interpolação:
    f(x) − p2(x) = f[a,c,b,x](x-a)(x-c)(x-b)
    se consideramos G(x)=(x-a)(x-c)(x-b) vemos que há uma mudança de sinal no ponto médio c.
    Por isso adoptamos um polinómio p3 que interpola em a,c,b mas também num outro qualquer ponto d→ c
    f(x) − p3(x) = f[a,c,d,b,x](x-a)(x-c)(x-d)(x-b) → f[a,c,c,b,x](x-a)(x-c)2(x-b)
    Assim, G(x)=(x-a)(x-c)2(x-b) não muda de sinal, tendo-se
    ES(f) = [a,b] f(x) − p3(x) dx = f[a,c,c,b,ξ][a,b](x-a)(x-c)2(x-b) dx
    pelo Teorema do valor intermédio para integrais (ξ ∈ [a,b]).
    Quando f ∈ C4[a,b] relacionamos com a 4ª derivada, e de I(G)=(a-b)5/120 obtemos
    ES(f) = − f(4)(ξ)/2880 (b − a)5

Regras Compostas

Aplicamos agora as fórmulas anteriores a sub-intervalos, dividindo o intervalo original em N partes com um espaçamento igual
h = (b − a)/N, definindo os nós zk = a + k h.
  • Regra dos Trapézios Composta
    Notando que
    [a,b] =   N

    k=1
    [zk-1,zk]
    aplicamos T[zk-1,zk] (a R. Trapézios simples em cada sub-intervalo [zk-1,zk]) e definimos
    TN(f) =   N

    k=1
    T[zk-1,zk] (f).
    Como o espaçamento é igual podemos obter
    TN(f) =   N

    k=1
    (f(zk-1)+f(zk)) h/2
    ou ainda
    TN(f) = h (   f(a)+f(b)
    2
    +   N-1

    k=1
    f(zk) )
  • Regra de Simpson Composta
    Seja N par. Subdividindo em intervalos de comprimento 2h
    [a,b] =   N/2

    k=1
    [z2k-2,z2k]
    Aplicamos S[z2k-2,z2k] (a R. Simpson simples em cada sub-intervalo [z2k-2,z2k]) e definimos
    SN(f) =   N/2

    k=1
    S[z2k-2,z2k] (f)
    Como o espaçamento é igual podemos obter
    SN(f) =   N/2

    k=1
    (f(z2k-2)+4f(z2k-1)+f(z2k)) h/3
    ou ainda
    SN(f) = h/3 ( f(a)+f(b) + 2  N/2 − 1

    k=1
    f(z2k) + 4   N/2

    k=1
    f(z2k-1) )
Notamos que a expressão de T1 é a da regra dos trapézios simples, da mesma forma que a expressão de S2 é a da regra de Simpson simples.

Erro das Regras Compostas

Como consequência do anterior, as fórmulas de erro para as regras compostas, resultam directamente duma soma das fórmulas de erro das regras simples.
  • Erro da Regra dos Trapézios Composta. Sendo f∈ C2[a,b] temos
    E(TN)(f) = I(f) − TN(f) =   N

    k=1
    I[zk-1,zk](f) −   N

    k=1
    T[zk-1,zk] (f)
    =   N

    k=1
    I[zk-1,zk](f) − T[zk-1,zk] (f) = −   N

    k=1
    f '' (ξk) h3/12
    em que ξk∈[zk-1,zk] e como por aplicação do teorema do valor intermédio
    ∃ ξ ∈ [a,b] : f ''(ξ) = (1/N)   N

    k=1
    f '' (ξk),
    e N h = b − a, obtemos
    E(TN)(f) = − f '' (ξ) h2 (b − a)/12
  • Erro da Regra de Simpson Composta. Sendo f∈ C4[a,b] temos
    E(TN)(f) = I(f) − SN(f) =   N/2

    k=1
    I[z2k-2,z2k](f) −   N/2

    k=1
    S[z2k-2,z2k] (f)
    =   N/2

    k=1
    I[z2k-2,z2k](f) − S[z2k-2,z2k] (f) = −   N/2

    k=1
    f(4)k) h5/90
    em que ξk∈[z2k-2,z2k] e como por aplicação do teorema do valor intermédio
    ∃ ξ ∈ [a,b] : f(4)(ξ) = (2/N)   N/2

    k=1
    f(4)k),
    e ainda de N h = b − a, obtemos
    E(SN)(f) = − f(4)(ξ) h4 (b − a)/180

Fórmulas de Gauss-Legendre

Iremos agora verificar que é possível encontrar, de forma muito mais simples, os valores dos nós z1, ..., zn e dos pesos w1, ..., wn que permitem obter uma fórmula de quadratura de grau 2n-1, aproveitando os 2n graus de liberdade existentes.
 
Teorema:
Seja Pn o polinómio de Legendre de grau n, e z1, ..., zn as suas raízes. A fórmula de quadratura
Q(f) = w1 f(z1 )+ ... + wn f(zn ),
tem grau 2n-1, desde que os pesos wk sejam obtidos pelo método dos coeficientes indeterminados ou pela integração dos polinómios de Lagrange
wk = [-1,1] Lk(x) dx.
 
dem: Pretendemos ver que, sendo p2n-1 um polinómio de grau ≤ 2n-1, temos
I(p2n-1) = Q(p2n-1).
Para isso consideramos a divisão de p2n-1 por Pn, o que nos dá
p2n-1 (x) = qn-1(x) Pn(x) + rn-1(x),
em que qn-1 é o quociente e rn-1 é o resto (ambos polinómios de grau ≤ n-1).
Como Pn(zk) = 0, obtemos imediatamente Q(p2n-1) = Q(rn-1).
Por outro lado, como rn-1 tem grau n-1, o polinómio interpolador em quaisquer n pontos coincide com rn-1 (em particular, considerando os pontos z1, ..., zn). Assim, rn-1 pode ser escrito de acordo com a fórmula de Lagrange
rn-1(x) = rn-1(z1) L1(x) + ... + rn-1(zn) Ln(x).
Portanto,
I(rn-1) = rn-1(z1) I(L1) + ... + rn-1(zn) I(Ln) = Q(rn-1),
já que wk = I(Lk).
Concluímos assim que Q(p2n-1) = Q(rn-1) = I(rn-1).
Resta ver que I(rn-1) = I(p2n-1) para concluirmos o resultado. Ora,
I(p2n-1) = I(qn-1 Pn)+ I(rn-1),
e como I(qn-1 Pn) representa o produto interno entre qn-1 e Pn, que são ortogonais, concluímos que I(qn-1 Pn) = 0.
Falta apenas verificar que não é exacta para um polinómio de grau 2n. Para esse efeito, basta observar que
Q(Pn2) = 0 ≠ I(Pn2) = ∥Pn2 .

 
Observação: Existem ainda outras Fórmulas de Gauss, aplicadas a integrais com peso W que define outros produtos internos.
Por exemplo, para o cálculo de
I(f) = [-1,1] W(x) f(x) dx
com W(x) = 1 / √ 1 − x2 obtemos as fórmulas de Gauss-Chebyshev considerando os zeros dos polinómios ortogonais de Chebyshev (que são os nós de Chebyshev).
Este tipo de fórmulas revela-se especialmente útil para o cálculo deste tipo de integrais em que há uma parte singular (reparar que |W(x)|→∞ quando x = ± 1).

Observação − ordens de convergência

No capítulo sobre resolução de equações não lineares, encontrámos uma definição de ordem de convergência para sucessões que não deve ser confundida com a noção de ordem de convergência que aparece nas regras de integração compostas.
 
Assim, podemos dizer que uma regra de integração Q tem ordem de convergência p se verificar
Eh(f) = I(f) − Qh(f) = O(hp),
tendo-se verificado que isto ocorria para regras de grau p.
No entanto, à partida isto significa apenas que existe uma constante C>0:
|Eh(f)| ≤ C hp, ou ainda formalmente |Eh(f)| ≈ C hp.
A relação com as ordens de convergência das sucessões não é directa, pois o parâmetro h é livre e não está definida nenhuma sucessão.
 
Nota: A relação entre as duas noções é por vezes feita considerando uma sucessão de valores h,
hn+1 = hn/2 ⇒ hn= 2-n h0
e dessa forma podemos considerar que
|Ehn| ≈ C (hn)p = C h0p (2-pn).
Perante uma sucessão destas a convergência será sempre linear com um coeficiente assimptótico K1=2-p.
É claro que perante uma outra sucessão de h, por exemplo hn= 2-2^n , obteríamos sempre convergência quadrática (para qualquer ordem p na convergência do método O(hp))... e por outro lado, para hn = 1/nr teríamos sempre convergência logarítmica.
 
Convém por isso ter em atenção que há uma nomenclatura semelhante com significado diferente.

[Capítulo 1] [Capítulo 2] [Capítulo 3] [Capítulo 4] [Capítulo 5]

C J S Alves (2008, 2009)