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'])