为什么matlab给出fminsearch优化错误?

Why matlab gives fminsearch optimisation error?

我有这样一个问题,我会用matlab来做。但是,我得到了一些错误:

Find the value of x ∈ [0, 1] that minimizes the largest eigenvalue of the matrix A(x) = xM +(1−x)P, where M is a 5×5 magic square and P is a 5 × 5 Pascal matrix.

我的matlab代码:

 %Define Matrices 
 M = magic(5);
 P = pascal (5);

% Define the variable x
 syms x

%Define the given matrix A
>> A = x*M + (1-x)*P;

%Define the eigenvalue lambda as y;
 syms y

%Find determinant of |A - lambda * I|
 D = det (A - y*eye(5))

%Define Objective function 
objective = @(y) y

%And Define the constraint
constraint = @(x,y) (-1)*D

%initial value x0 = (0:0.001:1);

%Minimization problem solving 

x = fmincon(objective, constraint, x0)

我收到这个错误;

使用 fmincon 时出错(第 221 行) FMINCON 要求以下输入为双精度数据类型:'X0'.

或者如果我使用另一个函数:fminsearch

x = fminsearch(objective, 约束, x0) 在这种情况下,我收到以下错误:

使用 fminsearch 时出错(第 96 行) FMINSEARCH 只接受双精度数据类型的输入。

我该如何处理这些错误?我的错误在哪里?我该如何更正它们?

我怀疑您没有向我们展示正确的代码,因为那里有 sums。我怀疑你的意思是 syms.

fmincon 仅适用于数字数据,不适用于符号数据。

我猜你要找的可能是 fminbnd,这有助于

Find minimum of single-variable function on fixed interval

n = 5;
M = magic(n);
P = pascal(n);
x = fminbnd(@(x) max(eig(x*M + (1-x)*P)),0,1);

这样

>> x
x =  0.79603