I'm getting an error related to fmincon

조회 수: 3 (최근 30일)
Zeynep Toprak
Zeynep Toprak 2020년 3월 29일
댓글: Ameer Hamza 2020년 3월 29일
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
Zeynep Toprak
Zeynep Toprak 2020년 3월 29일
Many thanks again :)
Ameer Hamza
Ameer Hamza 2020년 3월 29일
Glad to be of help.

댓글을 달려면 로그인하십시오.

추가 답변 (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