好的,我遇到了一个问题(可能是一个新手问题),但现在就说了:
for i=1:1:16;
h=10^(-i);
yDFC2(i)=(1/(2*1*h(i)))*(-1*valX+valX);
end
err2=abs(fDX(x1)-yDFC2);
loglog(h,err2,'b-');
每次运行此代码时,都会出现以下错误:
尝试访问h(2); index因界而错,因为numel(h)= 1
valX
是通过确定用户输入的函数的图像而计算的变量; fDX
是该函数的衍生物(两者都运行良好)。
这是为了绘制间距(h
)与中心有限差分(CFD)中的误差。 for循环中的公式是CFD为n=2
计算的一阶导数。
间距需要以10^(-i)
为增量。
如果有人能帮我解决这个问题,我会非常感激。
答案 0 :(得分:3)
如果你这样做
h = 10.^(-(1:1:16));
在for循环之外,你可以在里面正确访问h(i)。问题是你为每个传递创建一个标量h。