1
我有以下功能:Fsolve與變量從其他陣列
function F = F(x,L,Kc1,Kc2,Kc3,Kc4)
F=[(2*L*x(1)^2)/Kc1 + L*x(1)*x(2)/Kc3 + x(1)+ (x(1)*Kc4/L)^0.5 - (2*(0.235)); (2*L*(x(2)^2))/Kc2 + x(2)+ L*x(1)*x(2)/Kc3 -2*(0.765)];
end
這裏,L,Kc1,Kc2,Kc3 and Kc4
是其中已經存儲在他們99點的數值陣列。因此,我需要99次解決x(1) and x(2)
並將它們存儲在陣列O2和N2中。對於這一點,代碼:
x0=[-5 -5];
O2=zeros(1,99);
N2=zeros(1,99);
for i=1:1:99
x=fsolve(@(x)F(x,L(i),Kc1(i),Kc2(i),Kc3(i),Kc4(i)),x0);
O2(i)=x(1);
N2(i)=x(2);
end
理想的情況下,我應該通過求解這些方程已經得到了陣列O2和N2。但是,當我運行我的程序時,出現以下錯誤:
??? Error using ==> vertcat
CAT arguments dimensions are not consistent.
Error in ==> F at 2
F=[(2*L*(x(1)^2))/Kc1 + L*x(1)*x(2)/Kc3 + x(1)+ (x(1)*Kc4/L)^0.5 - (2*(0.235)); (2*L*(x(2)^2))/Kc2 +
x(2)+ L*x(1)*x(2)/Kc3 -2*(0.765)];
Error in ==> @(x)F(x,L(i),Kc1(i),Kc2(i),Kc3(i),Kc4(i))
Error in ==> fsolve at 254
fuser = feval(funfcn{3},x,varargin{:});
Error in ==> Air_equilibriuw at 76
x=fsolve(@(x)F(x,L(i),Kc1(i),Kc2(i),Kc3(i),Kc4(i)),x0);
Caused by:
Failure in initial user-supplied objective function evaluation. FSOLVE cannot continue.
有人知道錯在哪裏嗎?提前致謝。
我計數6輸入到F(),但你傳遞7個輸入,包括額外的x0。檢查括號。 – Oleg 2013-04-27 17:27:58
我改了括號。我仍然收到一個錯誤,但一個新的。我編輯了評論。謝謝您的幫助。 – 2013-04-27 17:50:49
在連接表達式中檢查除法和乘以L.使用'dbstop if error',然後運行你的代碼。當完成'dbclear如果錯誤'。 – Oleg 2013-04-27 18:43:33