MATLAB Index在显式euler的编程中超出矩阵维度

时间:2015-03-18 06:44:24

标签: matlab

我一直收到这个错误。我纠正逻辑整数错误后收到此错误。我能想到编程的唯一方法是定义初始值,然后在下一个t值启动euler的方法,因为它使用前面的解决方案来查找下一个。但通过这样做我得到这个错误?我不确定如何解决它。我试图从我的最终价值结束一步,但这也没有用。谢谢您的帮助。对于这个问题,我们必须创建函数并调用它。我最初使用n = 8。

function [exeuler] = pb3(n)
%using explicit euler to solve ODE with input n and outputting exeuler as
%the answer
%n=steps t,y are initial conditions
h=3/n;
t=logical((1+h):h:4);
back=logical(t-h);

exeuler(1)=2; %defines the initial value
exeuler(t)=exeuler(back)+h*(t.^2-(2*exeuler(back)/t));

end

1 个答案:

答案 0 :(得分:0)

嗯,我很抱歉,但你还没有付出太多努力。对于将来,请提供完整的代码(即具有示例功能等)。目前还不清楚。

我认为你的问题在于以下几点:

t=logical((1+h):h:4);
exeuler(t)=exeuler(back)+h*(t.^2-(2*exeuler(back)/t));

因为t是一个向量。您正在使用非整数值作为索引调用向量。然后,我想,你得到的错误数量的exeuler(t)导致错误 并且for-loop缺失了,不是吗?因为你不是逐步使用欧拉方法而因此f(t + 1)并不真正依赖于f(t)。
所以,我的建议一般是不纠正这个错误,而是重新考虑你的算法。