我正在创建一个MATLAB代码来使用前向差异来估计雅可比矩阵。这是代码:
%Calculate Jacobian Numerically using forward differences:
function J=Jacobianest(x,F) % X is a column vector of variables, f is a column function vector
h=1e-7;
n=length(x);
J=zeros(n);
for i=1:n
xp=x;
xp(i)=x(i)+h;
J(:,i)=1/h*(F(xp)-F(x));
end
运行时出现以下错误:
Jacobianest(x,'multivariable_newton_fun') Subscript indices must either be real positive integers or logicals. Error in Jacobianest (line 9) J(:,i)=1/h*(F(xp)-F(x));
我查看其他问题以获得答案并尝试调试/ dbstop
,但我似乎无法找到任何明显的问题。
我使用i
作为列索引,它应该只有1
到n
的整数值(希望所有整数都是。)
答案 0 :(得分:1)
您需要传递函数而不是字符串。 怎么样:
-2146233079 & 0xFFFF = 5385
如果它是一个字符串,即你使用单引号,那么Jacobianest(x,@multivariable_newton_fun)
会给出字符串的第一个字母,在本例中为' m'。
此外,如果您尝试F(1)
,您将收到上述错误。
F(0)
生成一个函数(在其他语言中考虑函数句柄或函数引用)。然后括号@
被解释为函数调用,而不是下标索引。