6- Com Pyton, determinar o polinomio de grau 4 que interpola os pontos ( -1,2 ), ( 0,3 ), (1,5),(4,-2),(5,8). Além disso, plotar o gráfico da interpolação.

Passo 1

O que o enunciado pede:
  • Determinar o polinômio de grau 4 que interpola os pontos (-1,2), (0,3), (1,5), (4,-2), (5,8).
  • Plotar o gráfico dessa interpolação usando Python.
Informações dadas (lista dos pontos):
(-1,2),\quad (0,3),\quad (1,5),\quad (4,-2),\quad (5,8).
O objetivo final concreto: encontrar os coeficientes do polinômio \displaystyle p(x)=a_0+a_1x+a_2x^2+a_3x^3+a_4x^4 que satisfaz \displaystyle p(x_i)=y_i para cada par (x_i,y_i) acima, e mostrar um código Python que plote esse polinômio.

Passo 2

Escolha de método e ideia básica (explicação didática):
  • Uma forma direta e ensinável de achar o polinômio interpolador é escrever o sistema linear gerado ao exigir que p(x_i)=y_i. Esse sistema usa a “matriz de Vandermonde”.
  • A ideia: para cada ponto (x_i,y_i) temos
a_0+a_1x_i+a_2x_i^2+a_3x_i^3+a_4x_i^4 = y_i.
  • Juntando as cinco equações obtemos um sistema linear V\mathbf{a}=\mathbf{y}, onde \mathbf{a}=(a_0,a_1,a_2,a_3,a_4)^T e V é a matriz de Vandermonde cujas linhas são [1,x_i,x_i^2,x_i^3,x_i^4].
Vou montar explicitamente essas linhas para os x dados:
  • Para x=-1 a linha é [1,-1,1,-1,1] com y=2.
  • Para x=0 a linha é [1,0,0,0,0] com y=3.
  • Para x=1 a linha é [1,1,1,1,1] com y=5.
  • Para x=4 a linha é [1,4,16,64,256] com y=-2.
  • Para x=5 a linha é [1,5,25,125,625] com y=8.
Escrevendo o sistema (cada linha corresponde a uma equação):
\begin{cases} a_0 - a_1 + a_2 - a_3 + a_4 = 2,\\[4pt] a_0 = 3,\\[4pt] a_0 + a_1 + a_2 + a_3 + a_4 = 5,\\[4pt] a_0 + 4a_1 + 16a_2 + 64a_3 + 256a_4 = -2,\\[4pt] a_0 + 5a_1 + 25a_2 + 125a_3 + 625a_4 = 8. \end{cases}]

Passo 3

Usar a equação simples para reduzir o sistema:
  • Da segunda equação obtemos imediatamente
a_0 = 3.
  • Substituindo a_0=3\) nas outras equações obtemos (subtraindo 3 do termo do lado direito): \[\begin{cases} - a_1 + a_2 - a_3 + a_4 = -1,\\[4pt] a_1 + a_2 + a_3 + a_4 = 2,\\[4pt] 4a_1 + 16a_2 + 64a_3 + 256a_4 = -5,\\[4pt] 5a_1 + 25a_2 + 125a_3 + 625a_4 = 5. \end{cases}
Agora temos um sistema 4\times4\] para \((a_1,a_2,a_3,a_4).]

Passo 4

Combinações lineares simples para obter relações mais fáceis:
  • Some a segunda (a partir de x=1) com a primeira (a partir de x=-1):
(a_1+a_2+a_3+a_4)+(-a_1+a_2-a_3+a_4)=2+(-1)
que simplifica para
2a_2 + 2a_4 = 1 \quad\Rightarrow\quad a_2+a_4=\tfrac{1}{2}.
  • Subtraia a primeira da segunda:
(a_1+a_2+a_3+a_4)-(-a_1+a_2-a_3+a_4)=2-(-1)
que dá
2a_1 + 2a_3 = 3 \quad\Rightarrow\quad a_1+a_3=\tfrac{3}{2}.
Essas duas relações reduzem o grau de liberdade: agora podemos expressar a_3 e a_4 em função de a_1 e a_2:
a_3=\tfrac{3}{2}-a_1,\qquad a_4=\tfrac{1}{2}-a_2.

Passo 5

Substituir a_3 e a_4 nas equações restantes (as que vêm de x=4 e x=5) para obter um sistema 2\times2 em a_1,a_2.
Substituição na equação de x=4:
4a_1+16a_2+64a_3+256a_4=-5.
Com a_3=\tfrac{3}{2}-a_1 e a_4=\tfrac{1}{2}-a_2:
4a_1+16a_2+64\Big(\tfrac{3}{2}-a_1\Big)+256\Big(\tfrac{1}{2}-a_2\Big)=-5.
Calcule termo a termo:
4a_1+16a_2+96-64a_1+128-256a_2=-5.
Agrupando:
-60a_1 -240a_2 +224 = -5 \quad\Rightarrow\quad 60a_1+240a_2 = 229.
Dividindo por 60:
a_1 + 4a_2 = \tfrac{229}{60}.
Substituição na equação de x=5:
5a_1+25a_2+125a_3+625a_4=5.
Com as mesmas substituições:
5a_1+25a_2+125\Big(\tfrac{3}{2}-a_1\Big)+625\Big(\tfrac{1}{2}-a_2\Big)=5.
Calculando:
5a_1+25a_2+187.5-125a_1+312.5-625a_2=5.
Agrupando e multiplicando por 1 para evitar decimais (ou reduzindo racionalmente) obtemos:
-120a_1 -600a_2 +500 = 5 \quad\Rightarrow\quad 120a_1+600a_2 = 495.
Dividindo por 15 (simplificação):
8a_1 + 40a_2 = 33.
Agora temos o sistema simples:
\begin{cases} a_1 + 4a_2 = \dfrac{229}{60},\\[6pt] 8a_1 + 40a_2 = 33. \end{cases}]

Passo 6

Resolver o sistema 2\times2 para a_1,a_2:
  • Multiplique a primeira equação por 8 para eliminar a_1 ao subtrair:
8a_1 + 32a_2 = \dfrac{8\cdot 229}{60} = \dfrac{1832}{60} = \dfrac{458}{15}.
Subtraindo essa da segunda equação 8a_1+40a_2=33:
(8a_1+40a_2)-(8a_1+32a_2) = 33 - \dfrac{458}{15}
8a_2 = \dfrac{495}{15} - \dfrac{458}{15} = \dfrac{37}{15}.
Logo
a_2 = \dfrac{37}{120}.
Agora a_1 por a_1 = \dfrac{229}{60} - 4a_2:
a_1 = \dfrac{229}{60} - 4\cdot\dfrac{37}{120} = \dfrac{229}{60} - \dfrac{74}{60} = \dfrac{155}{60} = \dfrac{31}{12}.

Passo 7

Determinar a_3 e a_4 pelas relações anteriores:
a_3 = \tfrac{3}{2}-a_1 = \tfrac{3}{2}-\tfrac{31}{12} = \tfrac{18-31}{12} = -\tfrac{13}{12},
a_4 = \tfrac{1}{2}-a_2 = \tfrac{1}{2}-\tfrac{37}{120} = \tfrac{60-37}{120} = \tfrac{23}{120}.
Recapitulando todos os coeficientes:
a_0 = 3,\quad a_1 = \tfrac{31}{12},\quad a_2 = \tfrac{37}{120},\quad a_3 = -\tfrac{13}{12},\quad a_4 = \tfrac{23}{120}.
Portanto o polinômio interpolador é
p(x)=3+\tfrac{31}{12}x+\tfrac{37}{120}x^2-\tfrac{13}{12}x^3+\tfrac{23}{120}x^4.
Observação breve (checagem): substituindo x=0,1,-1,4,5 neste polinômio recuperamos respectivamente 3,5,2,-2,8, logo a interpolação está correta.

Passo 8

Código Python para calcular e plotar (passo a passo, você pode rodar no seu computador):
import numpy as np
import matplotlib.pyplot as plt

# pontos dados
x = np.array([-1, 0, 1, 4, 5], dtype=float)
y = np.array([ 2, 3, 5, -2, 8], dtype=float)

# calcular coeficientes resolvendo o sistema de Vandermonde
V = np.vander(x, 5)[:, ::-1]  # vander gera [x^4,x^3,...,1], aqui rearranjamos para [1,x,x^2,x^3,x^4]
# alternativamente: V = np.column_stack([x**0, x**1, x**2, x**3, x**4])
# resolver V @ a = y
a = np.linalg.solve(V, y)  # a será [a0, a1, a2, a3, a4]

# construir uma função polinomial para plot
def p(z):
    return a[0] + a[1]*z + a[2]*z**2 + a[3]*z**3 + a[4]*z**4

# pontos para plot
xs = np.linspace(min(x)-1, max(x)+1, 400)
ys = p(xs)

# plot
plt.figure(figsize=(8,5))
plt.plot(xs, ys, label='polinômio interpolador (grau 4)')
plt.plot(x, y, 'o', label='pontos dados', markersize=8)
plt.axhline(0, color='gray', linewidth=0.5)
plt.axvline(0, color='gray', linewidth=0.5)
plt.legend()
plt.xlabel('x')
plt.ylabel('p(x)')
plt.title('Interpolação polinomial de grau 4')
plt.grid(True)
plt.show()

# imprimir coeficientes (verificação)
print("Coeficientes a0..a4 = ", a)
Explicação rápida do código:
  • Montamos a matriz de Vandermonde e resolvemos o sistema linear com np.linalg.solve.
  • Definimos a função p(x) usando os coeficientes obtidos.
  • Geramos uma malha de pontos xs e calculamos ys=p(xs) para desenhar a curva contínua.
  • Plotamos a curva e marcamos os pontos dados para ver que a curva passa por todos.

Resposta

p(x)=3+\tfrac{31}{12}x+\tfrac{37}{120}x^{2}-\tfrac{13}{12}x^{3}+\tfrac{23}{120}x^{4}

Exercícios relacionados