import numpy as np
import matplotlib.pyplot as plt
# 1. Настройка функции (Вариант 20)
def f(x):
return np.sqrt(1 - x**2)
a, b = 0, 0.5
n = 10
h = (b - a) / n
# Точки для гладкого графика функции
x_curve = np.linspace(a, b, 200)
y_curve = f(x_curve)
# Точки разбиения для n=10
x_nodes = np.linspace(a, b, n + 1)
y_nodes = f(x_nodes)
plt.figure(figsize=(12, 7))
# Рисуем гладкую кривую
plt.plot(x_curve, y_curve, 'r', lw=2, label='f(x) = $\sqrt{1-x^2}$')
# Рисуем фигуры (Трапеции)
for i in range(n):
# Координаты углов каждой трапеции
xs = [x_nodes[i], x_nodes[i], x_nodes[i+1], x_nodes[i+1]]
ys = [0, y_nodes[i], y_nodes[i+1], 0]
# Рисуем контур и заливку
plt.fill(xs, ys, 'b', edgecolor='darkblue', alpha=0.2)
# Рисуем вертикальные линии разбиения
plt.vlines(x_nodes[i], 0, y_nodes[i], color='gray', linestyle='--', lw=0.5)
plt.vlines(x_nodes[-1], 0, y_nodes[-1], color='gray', linestyle='--', lw=0.5)
# Оформление
plt.title(f'Визуализация численного интегрирования (Метод Трапеций, n={n})', fontsize=14)
plt.xlabel('x')
plt.ylabel('y')
plt.xlim(a - 0.05, b + 0.05)
plt.ylim(0, 1.1)
plt.grid(True, alpha=0.3)
plt.legend()
# Добавим подписи точек x на оси
plt.xticks(x_nodes, [f'{val:.2f}' for val in x_nodes], rotation=45)
plt.tight_layout()
plt.show()