如何使用RK4算法解决ODE?

时间:2018-01-19 18:25:36

标签: algorithm matlab math numerical-methods differential-equations

我使用的是RK4算法:

xlabel('x')
ylabel('y')

h=0.05;
fprintf ('\n First block \n');
xx = [0:h:1];
Nodes = length(xx);
yy = zeros(1,Nodes);
for i=1:Nodes
  fp(i)=feval('edo',-1,xx(i));
end
E=RK4_h('edo',0,1,-1,h);
plot(E);
fprintf ('\n%f',E);

在我的主脚本中,我将其称为每个值:

edo

问题是当我尝试将RK4算法与function edo = edo(y,t) edo = 6*((exp(1))^(6*t))*(y-(2*t))^2+2; 公式一起使用时:

y(0)=8

结果不合逻辑,例如,真实值为:y(1)=11,53int。但估计并不接近。 E向量中的任何一个坐标代表了该问题的可行方法,因此我不知道这是否是正确的实现。

实施有一个基本错误?

1 个答案:

答案 0 :(得分:1)

函数edot作为第一个参数,将y作为第二个参数。您反转参数

你的功能应该是:

 function edo = edo(t,y)   % NOT edo(y,t)
   edo = 6*((exp(1))^(6*t))*(y-(2*t))^2+2;