【发布时间】:2021-07-02 19:20:15
【问题描述】:
我正在尝试使用 euler 方法来使用 matlab 解决初始值问题
close all;
clear;
clc;
a=0; %initial limit
b=1.2;% final limit
n=20; %Number of points
h=(b-a)/n; %step length
t=a:h:b;
wn(i+1)=[0.5 zeros(1,n)];
for i=1:n
wn(i+1)=wn(i)+h*(wn(i)-t(i)^2)+1;
end
yActual=(t+1).^2-0.5*exp(t);
err=abs(wn-yActual);
disp('==============================================================================')
disp(' t_i w_i y_i |w_i-y_i| ')
disp(' (Approximation) (Actual Value) (Error) ')
disp('==============================================================================')
for i=1:n+1
fprintf('%0.5f \t %0.5f \t %0.5f \t %0.5f \n',t(i),wn(i),yActualI(i),err(i));
end
plot(t,wn,'-or','Linewidth',2)
hold on
gird on
plot(t,yActual,'-b','Linewidth',2)
xlabel('t')
ylabel('y')
legend('Euler Approximation','Actual Value')
但是当我运行代码时,它显示了这个错误,我搜索了很多,但没有找到解决它的方法:
Subscript indices must either be real positive integers or logicals.
Error in Assignment3_Q2 (line 11)
wn(i+1)=[0.5 zeros(1,n)];
我该如何解决?请您通过代码向我展示,因为我是 MatLab 的初学者
【问题讨论】:
-
在 MATLAB 编辑器中,打开调试器以在出错时停止。然后运行你的程序。它将在您发生错误的 11 处停止。现在检查此时
i的值。它有你期望的价值吗?围绕这一点检查您的代码,为什么i没有您期望的值?你在哪里设置它的值? -
在错误所在的行,
i被定义为复杂单位,因为这是默认值,您还没有重新分配它(尽管您稍后会这样做,这是不好的做法)。您向 Matlab 询问向量的i+1th 元素,它可以理解地抛出错误。