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)