import math

h_list = [0.25, 0.5, 1]
x = 1.5

def y(x):
    return math.e ** (2*x / (13 + 11))

def real_diff_y(x):
    return (2 / (13 + 11)) * math.e ** (2*x / (13 + 11))

def cal_diff_y_1(x, h):
    return (y(x+h) - y(x-h)) / (2*h)

def cal_diff_y_1_left(x, h):
    return (y(x) - y(x-h)) / h

def cal_diff_y_2(x, h):
    return (y(x+h) + y(x-h) - 2 * y(x)) / (h ** 2)

for h in h_list:
    print('--------Шаг:', h)
    print('Вторая произвоная:', cal_diff_y_2(x, h))
    print('Первая произвоная с первым порядом:', cal_diff_y_1(x, h), '. Погрешность:', abs(cal_diff_y_1(x, h) - real_diff_y(x)))
    diff_1_rank_2 = cal_diff_y_1_left(x, h) + cal_diff_y_2(x, h) * h / 2
    print('Первая произвоная вторым порядом:', diff_1_rank_2, '. Погрешность:', abs(diff_1_rank_2 - real_diff_y(x)))

# --------Шаг: 0.25
# Вторая произвоная:                    0.007869371100589717
# Первая произвоная с первым порядом:   0.09443586870804399 . Погрешность: 6.830952475139762e-06
# Первая произвоная вторым порядом:     0.09443586870804399 . Погрешность: 6.830952475139762e-06
# --------Шаг: 0.5
# Вторая произвоная:                    0.00787022501288881
# Первая произвоная с первым порядом:   0.09445636334441687 . Погрешность: 2.732558884802061e-05
# Первая произвоная вторым порядом:     0.09445636334441687 . Погрешность: 2.732558884802061e-05
# --------Шаг: 1
# Вторая произвоная:                    0.007873641403388643
# Первая произвоная с первым порядом:   0.09453836857852915 . Погрешность: 0.00010933082296030183
# Первая произвоная вторым порядом:     0.09453836857852926 . Погрешность: 0.00010933082296041285