登录论坛

查看完整版本 : [MATLAB工具箱] 关于fminbnd的问题


cnzjtzszf
2010-07-20, 16:44
本人是初学者.
A(:,:,1)是一个含有字符参数tc1的4×9矩阵如下:
A(:,:,1)=[3 6 8 tc1 5 7 6 4 2;
6 4 5 1 3 8 2 4 tc1;
6 4 8 3 0 tc1 8 3 5;
5 8 7 2 6 tc1 6 3 4;]
Q(:,:,1)=[5;7;3;4];
Q1=A(:,:,1)*(( transpose(A(:,:,1))*A(:,:,1))\(transpose(A(:,:,1))*Q(:,:,1)))
Q_2=(Q(:,:,1)-Q1).*(Q(:,:,1)-Q1);
f=@(tc1)sum(Q_2);
[tc1,f]=fminbnd(f,90,10800)

想通过以上程序求得变量tc1在区间(90,10800)内sum(Q_2)的最小值,可是出现以下问题,

??? Function 'le' is not defined for values of class 'sym'.
Error in ==> le at 18
[varargout{1:nargout}] = builtin('le', varargin{:});
Error in ==> fminbnd at 277
if fu <= fx
但是如果先计算出sum(Q_2)然后粘贴至f方程中又可以完成求值过程,请问是否因为变量的原因呢?如果想一气呵成应该怎样做呢?

请大家帮帮我(tc1是字符变量)