import pandas as pd import matplotlib.pyplot as plt def export_component_comparison( rk4_path: str, ab2_path: str, component: str, ylabel: str, out_name: str, ): """ Строит график зависимости одной компоненты x_i(t) от времени, на котором результаты метода Рунге--Кутты и метода Адамса--Башфорта представлены на общей координатной плоскости (п.4 базовой части задания). """ df_rk4 = pd.read_csv(rk4_path) df_ab2 = pd.read_csv(ab2_path) t_rk4, y_rk4 = df_rk4["t"].values, df_rk4[component].values t_ab2, y_ab2 = df_ab2["t"].values, df_ab2[component].values plt.figure(figsize=(10, 6)) plt.plot(t_rk4, y_rk4, label="Рунге--Кутты 4-го порядка", linewidth=2.2, color="#1f77b4") plt.plot(t_ab2, y_ab2, label="Адамса--Башфорта 2-го порядка", linewidth=1.8, color="#ff7f0e", linestyle="--") plt.xlabel("t", fontsize=12) plt.ylabel(ylabel, fontsize=12) plt.grid(True, which="both", linestyle="--", alpha=0.6) plt.legend(fontsize=11, loc="best", framealpha=0.9) t_min = min(t_rk4.min(), t_ab2.min()) t_max = max(t_rk4.max(), t_ab2.max()) plt.xlim(t_min - 0.1, t_max + 0.1) plt.ylim(-0.02, 1.05) plt.tight_layout() plt.savefig(f"figures/{out_name}.png", dpi=300) plt.close() RK4_CSV = "../build/bin/results/runge_kutta_plugin.csv" AB2_CSV = "../build/bin/results/adams_bashforth_plugin.csv" export_component_comparison(RK4_CSV, AB2_CSV, "x1", r"$x_1(t)$", "x1_comparison") export_component_comparison(RK4_CSV, AB2_CSV, "x2", r"$x_2(t)$", "x2_comparison") export_component_comparison(RK4_CSV, AB2_CSV, "x3", r"$x_3(t)$", "x3_comparison")