代码(用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
的输出,它应该是数值微分矩阵?
答案 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)