ODE龙格库塔MATLAB错误



所以我想创建一个Runge Kutta函数,这是我的代码:

function [t,U] = RK(f, n, eta, interv)
h = (interv(2)-interv(1))/n;
t = interv(1):h:interv(2);
v(1) = eta(1);
w(1) = eta(2);
for i=1:n
    k1 = f([v(i),w(i)]);
    k2 = f([v(i),w(i)]+h*k1/2); %f(t(i)+h/2, u(:,i)+h*k1/2);
    k3 = f([v(i),w(i)]+h*k2/2);
    k4 = f([v(i),w(i)]+h*k3);
    v(i+1) = v(i) + h*(k1(1)+2*k2(1)+2*k3(1)+k4(1))/6;
    w(i+1) = w(i) + h*(k1(2)+2*k2(2)+2*k3(2)+k4(2))/6;
end
U = [v;w];
end

其中U是一个2行n+1列的矩阵,当我试图执行这个函数时,这里是问题,例如:

RK(sin, 10, [0,1], [5,15])

我得到错误not enough input arguments,但当我尝试执行代码作为一个脚本,并用sin替换f每件事都有效,我得到U矩阵谁能告诉我解决办法是什么?

您正在使用sin作为函数句柄。只要加上@符号,你就可以设置了。

RK(@sin, 10, [0,1], [5,15])

相关内容

  • 没有找到相关文章

最新更新