3.2.43 Polinômio interpolador é o nome dado ao polinômio de grau (n-1) determinado por (e que passa através de) n pontos, ( xi, yi ) com todos os xi distintos. Esse polinômio interpolador forma uma base para quadraturas numéricas.
(a) Mostre que exigir que um polinômio de grau (n-1) em x passe por cada um dos n pontos ( xi, yi ) com todos os xi distintos resulta em n equações simultâneas da forma
sumj=0^n-1 aj xi^j=yi, i=1,2, ldots, n
(b) Escreva um programa de computador que lerá n pontos de dados e retornará os n coeficientes aj. Se houver uma sub-rotina disponível, use-a para resolver equações simultâneas.
(c) Reescreva o conjunto de equações simultâneas como uma equação matricial
X A=Y
(d) Repita o cálculo de computador da parte (b), mas, desta vez, resolva para o vetor A invertendo a matriz X (novamente, usando uma sub-rotina).

Passo 1

O enunciado pede para construir o polinômio interpolador de grau n-1 que passa pelos pontos (xi,yi), com todos os xi distintos, e aí
1. Mostrar que isso gera n equações lineares em aj.
2. Escrever um pseudocódigo que leia os n pontos e devolva os coeficientes aj usando uma sub-rotina de solução de sistemas.
3. Reescrever esse sistema na forma matricial X, A= Y.
4. Resolver o mesmo usando inversão de X.

Passo 2

Para um polinômio de grau n-1 escrevemos
p(x)=sumj=0^n-1aj,x^j
Exigir p(xi)=yi para cada i=1,2,dots,n dá exatamente
sumj=0^n-1aj,xi^j = yi, i=1,2,dots,n,
ou seja, n equações lineares em n incógnitas aj.

Passo 3

Um pseudocódigo simples que lê pontos e retorna o vetor de coeficientes é:
ler \(n\)
para \(i\) de \(1\) até \(n\)
  ler \(x[i], y[i]\)
para \(i\) de \(1\) até \(n\)
  para \(j\) de \(0\) até \(n-1\)
    M[i][j+1] \leftarrow x[i]^j
chamar subrotina \(solve\_linear\_system\)(M, y, A)
imprimir A
Aqui (M,y,A) preenche o vetor tal que .

Passo 4

Definindo o vetor coluna
e a matriz de Vandermonde
o sistema fica simplesmente

Passo 5

Em vez de chamar diretamente uma subrotina de sistema linear, podemos inverter (supondo-a não singular) e computar
No pseudocódigo, bastaria trocar
chamar \(solve\_linear\_system\)(M,y,A)
por
invX \leftarrow chamar subrotina \(invert\_matrix\)(M)
A   \leftarrow invX \cdot y

Resposta

(a) Substituindo em obtemos
(b) Pseudocódigo:
ler \(n\)
para \(i\) de \(1\) até \(n\)
  ler \(x[i], y[i]\)
para \(i\) de \(1\) até \(n\)
  para \(j\) de \(0\) até \(n-1\)
    M[i][j+1] \leftarrow x[i]^j
chamar \(solve\_linear\_system\)(M, y, A)
imprimir A
(c) Na forma matricial, com , e a matriz de Vandermonde, temos
(d) Resolvendo por inversão:
usando uma sub-rotina de inversão de matriz.

Exercícios de Livros Relacionados