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


import math

def f(x):
    return x**2 + 4* math.sin(x) - 1 

a = 0.3
b = 1.3
h = 0.1
x = []
current = a
while current <= b + 1e-12:

    x.append(round(current, 10))

    current += h

y = [f(xi) for xi in x]
n = len(x)



dy = [y[i+1] - y[i] for i in range(n-1)]
d2y = [dy[i+1] - dy[i] for i in range(n-2)]
d3y = [d2y[i+1] - d2y[i] for i in range(n-3)]
d4y = [d3y[i+1] - d3y[i] for i in range(n-4)]


y1 = [0]*n
y2 = [0]*n


R1 = [0]*n
R2 = [0]*n

for i in range(n):

    if i == 0:

        y1[i] = (y[1] - y[0]) / h
        y2[i] = (y[2] - 2*y[1] + y[0]) / h**2
        

        R1[i] = -(1/(2*h)) * d2y[0]
        R2[i] = -(1/(h**2)) * d3y[0]

    elif i == n-1:

        y1[i] = (y[i] - y[i-1]) / h
        y2[i] = (y[i] - 2*y[i-1] + y[i-2]) / h**2
        

        R1[i] = -(1/(2*h)) * d2y[-1]
        R2[i] = -(1/(h**2)) * d3y[-1]

    else:

        y1[i] = (y[i+1] - y[i-1]) / (2*h)
        y2[i] = (y[i+1] - 2*y[i] + y[i-1]) / h**2

        if i < len(d2y):

            R1[i] = -(1/(2*h)) * d2y[i]

        if i < len(d3y):

            R2[i] = -(1/(h**2)) * d3y[i]
            

print(" i     x                y                  y'                  y''              R1                R2")



for i in range(n):

    print(f"{i:2d}  {x[i]:10.5f}  {y[i]:16.10f}  {y1[i]:16.10f}  {y2[i]:16.10f}  {R1[i]:16.10f}  {R2[i]:16.10f}")


print("\nПроверка:")

print(" i        x            y' точн.           y'' точн.")

for i in range(n):
    exact_y1 = 2*x[i] + 4*math.cos(x[i])
    exact_y2 = 2 - 4*math.sin(x[i])
    print(f"{i:2d}   {x[i]:10.5f}   {exact_y1:16.10f}   {exact_y2:16.10f}")