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}")