Você está na página 1de 3

Cálculo e desenho de um polinômio a partir das raízes:

n−1
pn (x)=( x−x 0 )(x−x 1)⋯(x−x n−1) = ∏ ( x−xi ) sendo n o número de raízes e o grau do
i=0
polinômio.

# programa polinômio a partir das raízes


import numpy as np

X = (2.5,4,5)

def poly(x):
P = 1
for i in range(len(X)):
P = P*(x-X[i])
return P

x= np.linspace(min(X),max(X))
y=[]
for t in x:
y.append(poly(t))

import matplotlib.pyplot as plt


plt.plot(x,y)
plt.title('poly(x)')
plt.grid(True)
plt.show()

O Polinômio sem a k-ésima raiz.


n
pn ,k ( x )=( x−x 0)( x−x 1 )⋯( x−x k −1 )(x−x k+1 )⋯(x −xn ) = ∏ (x−x i ) sendo n o grau do
i=0
i≠k
polinômio, e o número de raízes (potenciais) é n+1.

# programa polinômio sem a k-esima raiz


import numpy as np

k = 2
X = (2.5,4,5)

def poly(k,x):
P = 1
for i in range(len(X)):
if i==k: continue
P = P*(x-X[i])
return P

x= np.linspace(min(X),max(X))
y=[]
for t in x: y.append(poly(k,t))

import matplotlib.pyplot as plt


plt.plot(x,y)
plt.title('poly(x)')
plt.grid(True)
plt.show()

Polinômios de Lagrange.
n−1
( x−x 0 ) (x−x 1) (x−x k−1 ) (x−x k+ 1) (x−x n−1) (x−x )
Lk (x) = ⋯ ⋯
(x k −x 0) ( xk −x 1) (x k −x k−1) ( x k −x k+1 ) ( x k − xn−1 )
= ∏ (x −xi )
i=0 k i
i≠k

# programa polinômios de Lagrange


import numpy as np

k = 1
X = (2.5, 4, 5)

def L(k,x):
P = 1
for i in range(len(X)):
if i==k: continue
P = P*(x-X[i])/(X[k]-X[i])
return P

x= np.linspace(min(X),max(X))
y=[]
for t in x:
y.append(L(k,t))

import matplotlib.pyplot as plt


plt.plot(x,y)
plt.title('L'+str(k)+'(x)')
plt.grid(True)
plt.show()
Interpolação pelo Método de Lagrange
n n n
( x−x )
pn (x)= y 0 L0 ( x )+ y 1 L1 (x)+⋯+ y n Ln (x) = ∑ y k Lk ( x) = ∑ y k ∏ (x −xj ) .
k=0 k =0 j=0 k j
j≠k

# programa Interpolação pelo polinômio de Lagrange


import numpy as np

X = (2.5, 4, 5)
Y = ( 2, 0, 1)

def L(k,x):
P = 1
for i in range(len(X)):
if i==k: continue
P = P*(x-X[i])/(X[k]-X[i])
return P

def poly(x):
S = 0
for k in range(len(X)):
S = S + Y[k]*L(k,x)
return S

x= np.linspace(min(X),max(X))
y=[]
for t in x:
y.append(poly(t))

import matplotlib.pyplot as plt


plt.plot(x,y)
plt.title('poly(x)')
plt.grid(True)
plt.show()

Exercícios. Atividade Assíncrona

x 1 2 3 4
ln(x) 0 0.6931 1.0986 1.3863

1) A partir dos dados tabelados acima calcule o valor de ln(3.7) por:


(a) Interpolação linear (polinômio de primeiro grau);
(b) Interpolação quadrática (polinômio de segundo grau);
(c) Interpolação cúbica (polinômio de terceiro grau).

Compare cada um dos resultados com o valor exato obtido chamando a função np.log(3.7)
diretamente.

2) A partir dos dados tabelados acima determine o valor de x tal que ln(x)=0.8

Você também pode gostar