Загрузка данных


def my_log(val):
    # Вычисление натурального логарифма через ряд
    t = (val - 1) / (val + 1)
    t2 = t * t
    total = 0.0
    curr = t
    k = 1
    while k < 100:
        total += curr / k
        curr *= t2
        k += 2
    return 2.0 * total

def target_func(x, deg):
    return my_log(x) ** deg

def basis_poly(x_val, idx, nodes_arr):
    # Расчет базисного полинома для текущего узла
    b = 1.0
    for j in range(len(nodes_arr)):
        if j != idx:
            b *= (x_val - nodes_arr[j]) / (nodes_arr[idx] - nodes_arr[j])
    return b

# --- Блок ввода ---
deg_val = float(eval(input("Введите степень p (например, 13/4): ")))
nodes_arr = [float(item) for item in input("Введите узлы через пробел (например, 2 3 4): ").split()]
x_point = float(input("Введите точку a (например, 2.5): "))

# --- Вычисления ---
approx_val = 0.0
for i in range(len(nodes_arr)):
    approx_val += target_func(nodes_arr[i], deg_val) * basis_poly(x_point, i, nodes_arr)

exact_val = target_func(x_point, deg_val)

print("Истинное значение f(a):", exact_val)
print("Приближенное значение L(a):", approx_val)