import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import Lagrange
# 1. Исходные данные для варианта 8
def f(x):
return (np.log(x)) ** (12 / 11)
x_nodes = np.array([10.0, 12.0, 14.0])
y_nodes = f(x_nodes)
a = 13.5
# 2. Построение полинома Лагранжа
poly = Lagrange(x_nodes, y_nodes)
# 3. Вычисление значений в точке a
exact_value = f(a)
approx_value = poly(a)
abs_error = abs(exact_value - approx_value)
print(f"Точное значение f({a}): {exact_value:.6f}")
print(f"Приближенное значение L({a}): {approx_value:.6f}")
print(f"Абсолютная погрешность: {abs_error:.6e}")
# 4. Построение графиков
x_dense = np.linspace(9.5, 14.5, 500)
y_exact = f(x_dense)
y_poly = poly(x_dense)
plt.figure(figsize=(9, 5))
plt.plot(x_dense, y_exact, label=r'$f(x) = (\ln x)^{12/11}$ (Точная)', color='blue', linewidth=2)
plt.plot(x_dense, y_poly, label='Полином Лагранжа $L(x)$', color='orange', linestyle='--')
plt.scatter(x_nodes, y_nodes, color='red', zorder=5, label='Узлы интерполяции')
plt.scatter([a], [approx_value], color='green', marker='x', s=100, zorder=5, label=f'Точка a = {a}')
plt.title('Интерполяция функции полиномом Лагранжа (Вариант 8)')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.grid(True, linestyle=':', alpha=0.6)
plt.show()