以下代码中的 f(2) 是什么?
What is f(2) in the following code?
代码(用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
的输出,它应该是数值微分矩阵?
首先,f
是您代码中的一个二维矩阵 (size [2,6]
),我假设您想要一个向量 (size [1,12]
)。
dffor
确实是正向差异。它有 11 个元素(而不是 f
中的 12 个),因为它在每个后续对 f
之间有差异:每个元素被使用两次,除了第一个和最后一个:(10*2 + 1 + 1)/2 = 11
。
f(2)
只是 f
的第二个元素,等于 x(2) + y(2) + z(2)
代码(用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
的输出,它应该是数值微分矩阵?
首先,f
是您代码中的一个二维矩阵 (size [2,6]
),我假设您想要一个向量 (size [1,12]
)。
dffor
确实是正向差异。它有 11 个元素(而不是 f
中的 12 个),因为它在每个后续对 f
之间有差异:每个元素被使用两次,除了第一个和最后一个:(10*2 + 1 + 1)/2 = 11
。
f(2)
只是 f
的第二个元素,等于 x(2) + y(2) + z(2)