% РЕШЕНИЕ ДУ: dy/dx = -2*x*y, y(0)=1, x ∈ [0,2]
clear; clc; close all;
%% 1. Аналитическое решение (dsolve)
syms y(x)
dy = diff(y,x) == -2*x*y;
y0 = y(0) == 1;
y_analytical = dsolve(dy, y0);
disp(['Точное решение: y = ', char(y_analytical)]);
%% 2. Численное решение (ode45)
dydx = @(x,y) -2*x*y;
[x_num, y_num] = ode45(dydx, [0, 2], 1);
%% 3. График сравнения
fplot(y_analytical, [0,2], 'b-', 'LineWidth', 2); % точное решение
hold on;
plot(x_num, y_num, 'ro', 'MarkerSize', 6); % численное решение
hold off;
grid on;
xlabel('x');
ylabel('y');
title('dy/dx = -2*x*y, y(0)=1');
legend('Точное: e^{-x^2}', 'Численное: ode45', 'Location', 'best');
%% 4. Проверка погрешности
y_exact = exp(-x_num.^2);
error = max(abs(y_num - y_exact));
disp(['Макс. погрешность ode45: ', num2str(error)]);