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


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()