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



clc
clear
close all

% Исходные данные
x0 = 0;
x1 = 1;
y0 = 6;
n = 20;

% Шаг интегрирования
h = (x1 - x0)/n;

% Начальные значения
x = zeros(1,n+1);
y = zeros(1,n+1);

x(1) = x0;
y(1) = y0;

% Правая часть уравнения
f = @(x,y) 2*y/(x-2) + 1;

% Метод Рунге-Кутты 4-го порядка
for i = 1:n
    k1 = f(x(i),y(i));
    k2 = f(x(i)+h/2,y(i)+h*k1/2);
    k3 = f(x(i)+h/2,y(i)+h*k2/2);
    k4 = f(x(i)+h,y(i)+h*k3);

    x(i+1) = x(i) + h;
    y(i+1) = y(i) + h*(k1+2*k2+2*k3+k4)/6;
end

% Точное решение
Y = x.^2 - 5*x + 6;

% График
figure(1)
plot(x,y,'bo-',x,Y,'r-')
grid on
xlabel('x')
ylabel('y')
title('Метод Рунге-Кутты 4-го порядка')
legend('Численное решение','Точное решение')

% Погрешность
E = abs(Y-y);

figure(2)
plot(x,E,'ko-')
grid on
xlabel('x')
ylabel('Погрешность')
title('Погрешность метода Рунге-Кутты')

% Результаты
disp('Метод Рунге-Кутты 4-го порядка')
disp('     x          y численное       y точное       Ошибка')
disp([x' y' Y' E'])