0% encontró este documento útil (0 votos)
37 vistas12 páginas

Codigos Python MN

El sol se desliza lentamente hacia el horizonte, pintando el cielo con tonos de naranja, rosa y púrpura. Las olas del mar se mecen suavemente, reflejando los colores cambiantes del cielo en su superficie. La brisa marina acaricia la piel con un toque fresco y salado, mientras el sonido rítmico de las olas crea una sinfonía natural que relaja el alma. En la orilla, las gaviotas vuelan en círculos, sus siluetas destacándose contra el resplandor del atardecer. La arena, todavía cálida por el sol de

Cargado por

ctorresg3
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
37 vistas12 páginas

Codigos Python MN

El sol se desliza lentamente hacia el horizonte, pintando el cielo con tonos de naranja, rosa y púrpura. Las olas del mar se mecen suavemente, reflejando los colores cambiantes del cielo en su superficie. La brisa marina acaricia la piel con un toque fresco y salado, mientras el sonido rítmico de las olas crea una sinfonía natural que relaja el alma. En la orilla, las gaviotas vuelan en círculos, sus siluetas destacándose contra el resplandor del atardecer. La arena, todavía cálida por el sol de

Cargado por

ctorresg3
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

j) Utilice un código de programación de Python para realizar los ejercicios b, c, d, e.

Como
resultado coloque el código, si no se ve bien, se puede colocar como imagen. Además, mostrar
una gráfica en donde se pueda ver la original y la interpolación que obtuvieron. Agregar el cálculo
del error relativo en el código.

Algoritmo interpolación Lagrange


import sympy as sp
import numpy as np

def lagrange_interpolation(x_values, y_values):


"""
Devuelve el polinomio de Lagrange simplificado como una cadena.

:param x_values: Lista de valores x (nodos)


:param y_values: Lista de valores y correspondientes a x_values
:return: Representación en cadena del polinomio simplificado
"""
n = len(x_values)
x = sp.symbols('x')
polynomial = 0

for i in range(n):
term = y_values[i]
for j in range(n):
if i != j:
term *= (x - x_values[j]) / (x_values[i] - x_values[j])
polynomial += term

# Simplificar el polinomio
polynomial = sp.simplify(polynomial).evalf(3)

return polynomial
Algoritmo Interpolación Newton
import sympy as sp
import numpy as np
def divided_differences(x_values, y_values):
"""
Calcula las diferencias divididas.

:param x_values: Lista de valores x (nodos)


:param y_values: Lista de valores y correspondientes a x_values
:return: Lista de diferencias divididas
"""
n = len(x_values)
diff = [[0 for _ in range(n)] for _ in range(n)]
for i in range(n): diff[i]
[0] = y_values[i]

for j in range(1, n):


for i in range(n - j):
diff[i][j] = (diff[i + 1][j - 1] - diff[i][j - 1]) /
(x_values[i + j] - x_values[i])

return [diff[0][i] for i in range(n)]

def newton_interpolation(x_values, y_values):


"""
Devuelve el polinomio de interpolación de Newton simplificado como
una cadena.

:param x_values: Lista de valores x (nodos)


:param y_values: Lista de valores y correspondientes a x_values
:return: Representación en cadena del polinomio simplificado
"""
n = len(x_values)
x = sp.symbols('x')
polynomial = 0
coeffs = divided_differences(x_values, y_values)
term = 1

for i in range(n):
polynomial += coeffs[i] * term
if i < n - 1:
term *= (x - x_values[i])

# Simplificar el polinomio
polynomial = sp.simplify(polynomial).evalf(3)

return polynomial
Ejercicio B

Ajuste el polinomio de interpolación de Newton de segundo grado para estimar 𝑥 = 3.5.


# Datos de ejemplo
y_values = [1.20, 1.91, 2.41]
x_values = [2, 3, 4]

# Mostrar el polinomio resultante simplificado


polynomial = newton_interpolation(x_values, y_values)
print(f"Polinomio de Newton simplificado: {polynomial}")

# Evaluar el polinomio en un punto


x_point = 3.5
y_interp = polynomial.subs('x', x_point)

# Valor real (para calcular el error, en este caso es un valor ficticio)


y_real = np.power(np.exp(x_point),0.25)

# Cálculo de errores
error_absoluto = abs(y_real - y_interp)
error_relativo = (error_absoluto / abs(y_real))*100

print(f"\nValor interpolado: {y_interp}")


print(f"Error absoluto: {error_absoluto}")
print(f"Error relativo: {error_relativo}")

import matplotlib.pyplot as plt


# Crear una serie de puntos x para la gráfica
x_plot = np.linspace(min(x_values), max(x_values), 400)
y_plot_newton = [polynomial.subs('x', x_val) for x_val in x_plot]
y_plot_real = [2*np.log(x_val**2) for x_val in x_plot]

plt.figure(figsize=(10,6))
plt.plot(x_plot, y_plot_newton, label='Interpolación de Newton')
plt.plot(x_plot, y_plot_real, label='Función real: $2\log(x^2)$')
plt.scatter(x_values, y_values, color='red') # puntos de interpolación
for i in range(len(x_values)):
plt.text(x_values[i], y_values[i], f'({x_values[i]}, {y_values[i]})')
plt.title('Interpolación de Newton vs Función Real')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.grid(True)
plt.show()
Ejercicio C

Ajuste el polinomio de interpolación de Lagrange de segundo grado para estimar 𝑥 = 3.5.


# Ejercicio
# Datos de ejemplo
y_values = [1.20, 1.91, 2.41]
x_values = [2, 3, 4]

# Mostrar el polinomio resultante simplificado


polynomial = lagrange_interpolation(x_values, y_values)
print(f"Polinomio de Lagrange simplificado: {polynomial}")

# Evaluar el polinomio en un punto


x_point = 3.5
y_interp = polynomial.subs('x', x_point)

# Valor real (para calcular el error, en este caso es un valor ficticio)


y_real = np.power(np.exp(x_point),0.25)

# Cálculo de errores
error_absoluto = abs(y_real - y_interp)
error_relativo = (error_absoluto / abs(y_real))*100

print(f"\nValor interpolado: {y_interp}")


print(f"Error absoluto: {error_absoluto}")
print(f"Error relativo: {error_relativo}")
import matplotlib.pyplot as plt
# Crear una serie de puntos x para la gráfica
x_plot = np.linspace(min(x_values), max(x_values), 400)
y_plot_lagrange = [polynomial.subs('x', x_val) for x_val in x_plot]
y_plot_real = [2*np.log(x_val**2) for x_val in x_plot]

plt.figure(figsize=(10,6))
plt.plot(x_plot, y_plot_lagrange, label='Interpolación de Lagrange')
plt.plot(x_plot, y_plot_real, label='Función real: $2\log(x^2)$')
plt.scatter(x_values, y_values, color='red') # puntos de interpolación
for i in range(len(x_values)):
plt.text(x_values[i], y_values[i], f'({x_values[i]}, {y_values[i]})')
plt.title('Interpolación de Lagrange vs Función Real')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.grid(True)
plt.show()
Ejercicio D

Ajuste el polinomio de interpolación de Newton de tercer grado para estimar 𝑥 = 3.5.


# Datos de ejemplo
y_values = [1.20, 1.91, 2.41, 2.80]
x_values = [2, 3, 4, 5]

# Mostrar el polinomio resultante simplificado


polynomial = newton_interpolation(x_values, y_values)
print(f"Polinomio de Newton simplificado: {polynomial}")

# Evaluar el polinomio en un punto


x_point = 3.5
y_interp = polynomial.subs('x', x_point)

# Valor real (para calcular el error, en este caso es un valor ficticio)


y_real = np.power(np.exp(x_point),0.25)

# Cálculo de errores
error_absoluto = abs(y_real - y_interp)
error_relativo = (error_absoluto / abs(y_real))*100

print(f"\nValor interpolado: {y_interp}")


print(f"Error absoluto: {error_absoluto}")
print(f"Error relativo: {error_relativo}")

import matplotlib.pyplot as plt


# Crear una serie de puntos x para la gráfica
x_plot = np.linspace(min(x_values), max(x_values), 400)
y_plot_newton = [polynomial.subs('x', x_val) for x_val in x_plot]
y_plot_real = [2*np.log(x_val**2) for x_val in x_plot]

plt.figure(figsize=(10,6))
plt.plot(x_plot, y_plot_newton, label='Interpolación de Newton')
plt.plot(x_plot, y_plot_real, label='Función real: $2\log(x^2)$')
plt.scatter(x_values, y_values, color='red') # puntos de interpolación
for i in range(len(x_values)):
plt.text(x_values[i], y_values[i], f'({x_values[i]}, {y_values[i]})')
plt.title('Interpolación de Newton vs Función Real')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.grid(True)
plt.show()
Ejercicio E

Ajuste el polinomio de interpolación de Lagrange de tercer grado para estimar 𝑥 = 3.5.


# Ejercicio
# Datos de ejemplo
y_values = [1.20, 1.91, 2.41, 2.80]
x_values = [2, 3, 4, 5]

# Mostrar el polinomio resultante simplificado


polynomial = lagrange_interpolation(x_values, y_values)
print(f"Polinomio de Lagrange simplificado: {polynomial}")

# Evaluar el polinomio en un punto


x_point = 3.5
y_interp = polynomial.subs('x', x_point)

# Valor real (para calcular el error, en este caso es un valor ficticio)


y_real = np.power(np.exp(x_point),0.25)

# Cálculo de errores
error_absoluto = abs(y_real - y_interp)
error_relativo = (error_absoluto / abs(y_real))*100

print(f"\nValor interpolado: {y_interp}")


print(f"Error absoluto: {error_absoluto}")
print(f"Error relativo: {error_relativo}")
import matplotlib.pyplot as plt
# Crear una serie de puntos x para la gráfica
x_plot = np.linspace(min(x_values), max(x_values), 400)
y_plot_lagrange = [polynomial.subs('x', x_val) for x_val in x_plot]
y_plot_real = [2*np.log(x_val**2) for x_val in x_plot]

plt.figure(figsize=(10,6))
plt.plot(x_plot, y_plot_lagrange, label='Interpolación de Lagrange')
plt.plot(x_plot, y_plot_real, label='Función real: $2\log(x^2)$')
plt.scatter(x_values, y_values, color='red') # puntos de interpolación
for i in range(len(x_values)):
plt.text(x_values[i], y_values[i], f'({x_values[i]}, {y_values[i]})')
plt.title('Interpolación de Lagrange vs Función Real')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.grid(True)
plt.show()
k) Utilice un código de programación de Python para realizar los ejercicios g, h. Como

resultado coloque el código, si no se ve bien, se puede colocar como imagen. Además,

mostrar una gráfica en donde se pueda ver la original y la interpolación que

obtuvieron. Agregar el cálculo del error relativo en el código.

Ejercicio G

Para la función dada, queremos encontrar el valor de 𝑥, cuando 𝑓(𝑥) = 1.5. Realizar la interpolación
inversa por el método de Newton de tercer grado.
# Datos de ejemplo
x_values = [1.20, 1.91, 2.41, 2.80]
y_values = [2, 3, 4, 5]

# Mostrar el polinomio resultante simplificado


polynomial = newton_interpolation(x_values, y_values)
print(f"Polinomio de Newton simplificado: {polynomial}")

# Evaluar el polinomio en un punto


x_point = 1.5
y_interp = polynomial.subs('x', x_point)

# Valor real (para calcular el error, en este caso es un valor ficticio)


y_real = np.power(np.exp(1.5),0.25)

# Cálculo de errores
error_absoluto = abs(y_real - y_interp)
error_relativo = (error_absoluto / abs(y_real))*100

print(f"\nValor interpolado: {y_interp}")


print(f"Error absoluto: {error_absoluto}")
print(f"Error relativo: {error_relativo}")

import matplotlib.pyplot as plt


# Crear una serie de puntos x para la gráfica
x_plot = np.linspace(min(x_values), max(x_values), 400)
y_plot_newton = [polynomial.subs('x', x_val) for x_val in x_plot]
y_plot_real = [2*np.log(x_val**2) for x_val in x_plot]

plt.figure(figsize=(10,6))
plt.plot(x_plot, y_plot_newton, label='Interpolación de Newton')
plt.plot(x_plot, y_plot_real, label='Función real: $2\log(x^2)$')
plt.scatter(x_values, y_values, color='red') # puntos de interpolación
for i in range(len(x_values)):
plt.text(x_values[i], y_values[i], f'({x_values[i]}, {y_values[i]})')
plt.title('Interpolación de Newton vs Función Real')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.grid(True)
plt.show()

Ejercicio H

Para la función dada, queremos encontrar el valor de 𝑥, cuando 𝑓(𝑥) = 1.5. Realizar la interpolación
inversa por el método de Lagrange de tercer grado.
# Datos de ejemplo
x_values = [1.20, 1.91, 2.41, 2.80]
y_values = [2, 3, 4, 5]

# Mostrar el polinomio resultante simplificado


polynomial = lagrange_interpolation(x_values, y_values)
print(f"Polinomio de Lagrange simplificado: {polynomial}")

# Evaluar el polinomio en un punto


x_point = 1.5
y_interp = polynomial.subs('x', x_point)

# Valor real (para calcular el error, en este caso es un valor ficticio)


y_real = np.power(np.exp(1.5),0.25)

# Cálculo de errores
error_absoluto = abs(y_real - y_interp)
error_relativo = error_absoluto / abs(y_real)

print(f"\nValor interpolado: {y_interp}")


print(f"Error absoluto: {error_absoluto}")
print(f"Error relativo: {error_relativo}")

import matplotlib.pyplot as plt


# Crear una serie de puntos x para la gráfica
x_plot = np.linspace(min(x_values), max(x_values), 400)
y_plot_lagrange = [polynomial.subs('x', x_val) for x_val in x_plot]
y_plot_real = [2*np.log(x_val**2) for x_val in x_plot]

plt.figure(figsize=(10,6))
plt.plot(x_plot, y_plot_lagrange, label='Interpolación de Lagrange')
plt.plot(x_plot, y_plot_real, label='Función real: $2\log(x^2)$')
plt.scatter(x_values, y_values, color='red') # puntos de interpolación
for i in range(len(x_values)):
plt.text(x_values[i], y_values[i], f'({x_values[i]}, {y_values[i]})')
plt.title('Interpolación de Lagrange vs Función Real')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.grid(True)
plt.show()

Link de drive:
https://drive.google.com/file/d/16JI_eUkS4BO87jFa_5ggSZFmb214oV91/
view?usp=drive_link

También podría gustarte