为什么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
我有这样一个问题,我会用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