dd1=@(x) integral(@(t) ((t/x(1))*10+(((t/x(1))+1)*x(1)-t)*200+3000)*(1/(sqrt(2*pi)*196.629)).*exp(-(t-600).^2/(2*196.629^2)),0,x(1)*x(2))+integral(@(t) (x(2)*10+10000)*(1/(sqrt(2*pi)*196.629)).*exp(-(t-600).^2/(2*196.629^2)),x(1)*x(2),100000)/(integral(@(t) (t-1)*(1/(sqrt(2*pi)*196.629)).*exp(-(t-600).^2/(2*196.629^2)),0,x(1)*x(2))+integral(@(t) (x(1)*x(2))*(1/(sqrt(2*pi)*196.629)).*exp(-(t-600).^2/(2*196.629^2)),x(1)*x(2),100000)); A=[];b=[];Aeq=[];Beq=[];VL=[1,1];BL=[50,50]; x0=[25,25]; [x,fval]=(dd1,A,b,Aeq,Beq,VL,BL,x0);该段matlab代码中出现了”调用函数或对变量进行索引时,请使用圆括号。否则,请检查不匹配的分隔符“的报错,为什么
时间: 2023-10-08 14:07:39 浏览: 101
这个错误通常是由于在函数调用或变量索引中使用了方括号而不是圆括号。在这段代码中,最后一行的函数调用中使用了方括号而不是圆括号,导致了这个错误的出现。
具体来说,这段代码将优化结果保存在了一个二元组 (x, fval) 中,但是在函数调用时使用了方括号而不是圆括号。正确的写法是使用圆括号将函数参数、约束条件和初始点组成的元组括起来,如下所示:
```matlab
dd1=@(x) integral(@(t) ((t/x(1))*10+(((t/x(1))+1)*x(1)-t)*200+3000)*(1/(sqrt(2*pi)*196.629)).*exp(-(t-600).^2/(2*196.629^2)),0,x(1)*x(2))+integral(@(t) (x(2)*10+10000)*(1/(sqrt(2*pi)*196.629)).*exp(-(t-600).^2/(2*196.629^2)),x(1)*x(2),100000)/(integral(@(t) (t-1)*(1/(sqrt(2*pi)*196.629)).*exp(-(t-600).^2/(2*196.629^2)),0,x(1)*x(2))+integral(@(t) (x(1)*x(2))*(1/(sqrt(2*pi)*196.629)).*exp(-(t-600).^2/(2*196.629^2)),x(1)*x(2),100000)); A=[];b=[];Aeq=[];Beq=[];VL=[1,1];BL=[50,50]; x0=[25,25];
[x,fval]=fmincon(dd1,x0,A,b,Aeq,Beq,VL,BL);
```
这样就可以避免这个错误了。
阅读全文