1
我正在創建一個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
(希望所有整數)的整數值。
錯誤不在賦給'J',而是賦給'F'。我猜'xp'和'x'不是整數。我認爲'F(xp(i))'會解決你的問題。作爲一個額外的建議:[不要使用'i'作爲變量](http://stackoverflow.com/questions/14790740/using-i-and-j-as-variables-in-matlab) – Adriaan