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