я сделал этот код для решений ОДУ с использованием Рунге-Kutta4:MATLAB как мне построить мое решение ОДУ Рунге-Kutta4 на всем интервале
function y=myODE(f,y0,x0,h,x_final)
x=x0;
y=y0;
while x<x_final
h=min(h,x_final-x);
k1=f(x,y);
k2=f(x+h/2,y+h*k1/2);
k3=f(x+h/2,y+h*k2/2);
k4=f(x+h,y+h*k3);
y=y+(h/6)*(k1+2*k2+2*k3+k4)
x=x+h;
end
f
является функция у»= F (х, у), y0
- начальное значение, x0
- это функция, начинающаяся с h
и x_final
, где функция останавливается.
Я попробовал свой код и он решает ОДУ для меня правильно, но я также хочу, чтобы построить свою функцию по х оси на интервале x0
к x_final
с h
подынтервалами. Когда я пытаюсь построить его, используя plot(x0:h:x_final,y)
, я получаю пустой граф. Я понимаю (догадываясь), что мне нужно привязать мой y
к нескольким x
, чтобы построить, но как я могу это сделать, не меняя слишком много кода?
Как я могу построить график для y
заданного y0
, интервал x0
к x_final
и дал h
?
Новое в MATLAB, оцените всю помощь, которую я могу получить!
Редактировать: Чтобы уточнить, для чего предназначен мой код;
Мне нужен этот ODE-решатель как для решения, так и для графического отображения. Я должен изучить ошибку усечения, посмотрев на значения y
на h
по сравнению с 2*h
и стабильность Runge-Kutta4, посмотрев на графики y
с различными h
.
Благодарим за ответ! Я полагаю, что я сам это исправил. –
@ KasperAndersson Тогда почему вы не удалили вопрос, если проблема исправлена? Кроме того, почему вы не ответили на свой вопрос? это помогает людям с похожими проблемами, если они есть. :-) –