I'm getting an error related to fmincon

3 次查看(过去 30 天)
Question is this;
My matlab code is as follows:
%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)
I get this error;
Error using fmincon (line 221)
FMINCON requires the following inputs to be of data type double: 'X0'.
If I use another function: fminsearch
x = fminsearch(objective, constraint, x0)
In this case I get the following error:
Error using fminsearch (line 96)
FMINSEARCH accepts inputs only of data type double.
How can I deal with these errors ? Where is my mistake? How can I correct them?
  3 个评论
Zeynep Toprak
Zeynep Toprak 2020-3-29
I guess you asked behind its math. Okay, I can explain as follows:
Zeynep Toprak
Zeynep Toprak 2020-3-29
Is this explanation and solution enough?

请先登录,再进行评论。

采纳的回答

Ameer Hamza
Ameer Hamza 2020-3-29
This is an example with fmincon
M = magic(5);
P = pascal (5);
f = @(x) max(abs(eig(x*M + (1-x)*P)));
x_sol = fmincon(f, rand, [], [], [], [], 0, 1);
  9 个评论

请先登录,再进行评论。

更多回答(1 个)

Torsten
Torsten 2020-3-29
编辑:Torsten 2020-3-29
If you mean the eigenvalue largest in magnitude, this should give you a start.
Incorporating fmincon can automatize the search for an optimal x.
M=magic(5);
P=pascal(5);
A=@(x) x*M+(1-x)*P;
x=0:0.02:1;
for i=1:numel(x)
d(i) = abs( eigs(A(x(i)),1) );
end
[dmin,idd] = min(d);
x(idd) %show x for which eigenvalue largest in magnitude is minimum
  4 个评论
Torsten
Torsten 2020-3-29
The error was corrected in the meantime.
Zeynep Toprak
Zeynep Toprak 2020-3-29
yeah, it works!! Many many thankss!! Take care of yourself! :))

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Linear Algebra 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by