Ваши k1
до k4
не определяются или не используются в качестве функций.Когда вы объявляете k1 = ODE(x,y)
, он пытается оценить функцию ODE
с векторами x
и y
, которые не определены.Что вы, вероятно, хотите сказать, это:
k1 = @(x,y,dx) (ODE(x,y));
k2 = @(x,y,dx) (ODE(x+0.5*dx,y+k1(x,y,dx)*0.5*dx));
k3 = @(x,y,dx) (ODE(x+0.5*dx,y+k2(x,y,dx)*0.5*dx));
k4 = @(x,y,dx) (ODE(x+dx,y+k3(x,y,dx)*dx));
rk4= @(x,y,dx) (y + 1/6*(k1(x,y,dx) + \
2*(k2(x,y,dx)+k3(x,y,dx)) + \
k4(x,y,dx))*dx);