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
채택된 답변
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
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
참고 항목
카테고리
Help Center 및 File Exchange에서 Linear Algebra에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!