以下代码中的f(2)是什么?

时间:2017-04-19 03:47:43

标签: matlab octave

代码(用Octave编写)是:

x=1:2:5;
y=1:1:3;
z=1:0.1:1.2;
f=[x+y+z,x.^2+z;sin(x.*y.*z),cos(x)];
h=x(2)-x(1);
xFor=x(1:end-1);
dffor=(f(2:end)-f(1:end-1))/h;
f(2) 
dffor

我得到的输出是

Hello World
ans = 0.84147
dffor = -1.07926  2.62926  -2.89423  4.44423  4.77985  -5.54500  13.59500  -12.95817

我不明白一些代码。 f(2)评估什么?

我实际上想要得到关于x的矩阵的数值导数。我认为这是前瞻性差异的方法。另外,为什么我得到一个[1x11]矩阵作为dffor的输出,它应该是数值微分矩阵?

1 个答案:

答案 0 :(得分:3)

首先,f是代码中的二维矩阵(size [2,6]),我假设你想要一个向量(size [1,12])。

dffor确实是前锋差异。并且它有11个元素(而不是12个f)因为它在每个后续f对之间有差异:除了第一个和最后一个元素之外,每个元素使用两次:(10*2 + 1 + 1)/2 = 11

f(2)只是f的第二个元素,等于x(2) + y(2) + z(2)