请问一下,我需要求一个函数的最小值,matlab程序跑不出来,实在不知道怎么解决了,十分感谢!

题目如图片所示,程序如下:T=[7 7 7 7 5 5 5 5 6 6];[m,fval] = fminbnd('0.5*(m*16-symsum(T(m),m,1,10))/(m*16)+0.5*sqrt(symsum((16-T(m))^2,m,1,10))/m',1,10) fval

用matlab程序跑不出来?其问题在于题主的自定义函数有问题。应该这样来写:

function f=func(x)

T=[7 7 7 7 5 5 5 5 6 6];

m=ceil(x);

C=T(1:m);

f=0.5*(m*16-sum(C))./(m*16)+0.5*sqrt(sum((16-C).^2))/m;

然后,执行下列命令

x1=1;x2=10;

[x,fval,exitflag] = fminbnd(@func,x1,x2);

m=ceil(x)

f=func(m)

执行结果

追问

亲测有效,谢谢您的回答!

另外,我还想请教一下,直接用您的程序然后用遗传算法工具箱求解,出现“索引超出矩阵维度”,您知道是什么原因吗?谢谢!

追答

函数表达式中加点运算符,试一下看

追问

修改成这样了,还是不行
function f=leijia(x)

T=[7 5 7 4 5 2 5 1 8 6];

m=ceil(x);

C=T(1:m);

f=0.5.*(m.*16-sum(C))./(m.*16)+0.5.*sqrt(sum((16-C).^2)./m);
希望老师能帮助解答一下,感谢。

来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
相似回答