Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Variante B
Instrucciones:
Lea atentamente los siguientes enunciados y resuelva usando los
algoritmos vistos en clase (puede realizar un programa en C, C++ o
Python para resolver el examen). Escriba en un documento de Word o
PDF los resultados de cada ejercicio.
1. Los puntos resultados de evaluar una función desconocida están
en el archivo “DataExamenB1.txt”.
a. Utilice dichos datos y el método de interpolación inversa
(ver Tarea 4), para obtener el cero de la función.
La solución a x=0 es: x= -0.07661
b. La función real es 𝑓(𝑥) = 5 𝑇𝑎𝑛(2.4 𝑥 − 0.5) − 9 𝑥2 + 4. Use
el método de Newton para encontrar el cero de la función.
La solución 0.00705
c. Calcule el error absoluto entre el resultado del inciso a) y el
del inciso b).
(-0.00766)-(-0.0705)=0.61% de error
d. BONUS (1 PUNTO EXTRA EN LA CALIFICACIÓN DEL
EXAMEN): Realice la gráfica de los puntos, la interpolación
y la función real.
from cmath import tan
import math as m
xi=[]
ei=[]
n=0
datos=open('DataExamenB1.txt','r')
for l in datos.readlines():
linea=l.split()
xi.append(float(linea[0]))
ei.append(float(linea[1]))
n+=1
datos.close()
datay=[]
datax=[]
for i in range(len(xi)):
datay.append(xi[i])
datax.append(xi[i]-ei[i])
print('N \t p1')
print('---------------')
print('0 \t {0}'.format(p0))
N=int(1)
while N<M:
p=gx(p0)
print('{0} \t {1}'.format(N,p))
if m.fabs(p-p0)<TOL:
break
else:
p0=p
N += 1
if N==M:
print('Proceso fallido.')
print('El cero de la funcion no fue encontrado despues de %d
iteraciones.'%(M))
print('Intente aumentar el numero de iteraciones o disminuir TOL.')
import math as m
import matplotlib.pyplot as plt
def f(x):
return np.atan(pow(x,2)+3)
def fm(x):
return m.atan(pow(x,2)+3)
datos = open('DataExamenB2.txt','r')
xi=[]
yi=[]
dyi=[]
n=0
for l in datos.readlines():
linea=l.split()
xi.append(float(linea[0]))
yi.append(float(linea[1]))
dyi.append(float(linea[2]))
n+=1
datos.close()
for i in range(n):
print('x= %f \t y = %f \t dyi = %f'%(xi[i],yi[i],dyi[i]))
def LagNK(m,k,x):
L=1
for i in range(m):
if i!=k:
L=L*(x-xi[i])/(xi[k]-xi[i])
return L
def PL(m,x):
P=0
for i in range(m):
P+=yi[i]*LagNK(m,i,x)
return P
def F(x):
return x
x=Symbol('x')
PLS=PL(n,x)
print('\nla interpolación por polinomios de Lagrange: \nPL(x) = %s\n'%PLS)
def H(m,j,x):
z=Symbol('z')
Lnj=LagNK(m,j,z)
DLnj=lambdify(z,diff(Lnj,z))
return (1-2*(x-xi[j])*DLnj(xi[j]))*(LagNK(m,j,x))**2
def Hh(m,j,x):
return (x-xi[j])*(LagNK(m,j,x))**2
def Hermite(m,x):
herm=0
for j in range(m):
herm=herm+yi[j]*H(m,j,x)+dyi[j]*Hh(m,j,x)
return herm
PHS=Hermite(n,x)
print('\nla interpolación por polinomios de Hermite: \nPH(x) = %s\n'%PHS)
for i in range(n):
print('f(%.2f) = %10.4f \t\t PLx(%.2f) = %12.4f \t\t PHx(%.2f) =
%12.4f'%(xi[i],fm(xi[i]),xi[i],PL(n,xi[i]),xi[i],Hermite(n,xi[i])))
a=0
b=2
N=int(input('\nNumero de particiones: '))
DX=(b-a)/N
SumL=0
for i in range(N):
Xi=a+(i*DX)
SumL+=DX*PL(n,Xi)
print('\nr la integral de Riemann de la función en el intervalo [0,2] PL(X):
%.5f'%(SumL))